2015-08-17 1 views
0

Я написал небольшое расширение chrome, которое получает некоторый html-контент из внешних источников (немало).

Для того, чтобы извлечь необходимую информацию (только текст), я использую

var $response = $(data); 
var $senderows = $response.find(".sendetermine tr"); 
$senderows.each(function() { 
    ... 
}); 

сканировать результирующий HTML. Мне не нужно добавлять результат ajax в DOM, поэтому мне не нужен ни один из встроенных скриптов внешнего HTML-результата. Но все же: Chrome продолжает метать сотни ошибок «Отказано для выполнения inline-обработчиков событий». Ошибки уже появляются, если я использую только var $response = $(data).

Как я могу избавиться от них? Как я могу проанализировать полученный HTML (желательно с использованием jQuery) без получения этих ошибок?

EDIT: Любые другие подсказки? Эти ошибки бросаются с очень высокой скоростью, они даже заметно замедляют работу браузера.

+0

Вы пытались использовать '$ ($. ParseXML (data))'? – Stryner

+0

Да, с тем же результатом – devnull69

+0

Но это был $ .parseHTML ... потому что результат ajax - это HTML, а не XML – devnull69

ответ

0

По крайней мере, мне удалось найти обходное решение: я удалил все встроенные обработчики onXXXX из текста HTML, прежде чем использовать на нем $(), et вуаля, больше никаких ошибок.

function removeInline(theHTML) { 
    theHTML = theHTML.replace(/onclick=\"[^\"]*\"/g, ''); 
    theHTML = theHTML.replace(/onchange=\"[^\"]*\"/g, ''); 
    theHTML = theHTML.replace(/onsubmit=\"[^\"]*\"/g, ''); 
    theHTML = theHTML.replace(/onmouseover=\"[^\"]*\"/g, ''); 
    theHTML = theHTML.replace(/onmouseout=\"[^\"]*\"/g, ''); 
    theHTML = theHTML.replace(/onerror=\"[^\"]*\"/g, ''); 
    theHTML = theHTML.replace(/onload=\"[^\"]*\"/g, ''); 
    return theHTML; 
} 
Смежные вопросы