如何避免$(数据)抛出"拒绝执行内联事件处理程序"

时间:2015-08-17 18:45:12

标签: javascript jquery google-chrome-extension

我写了一个小的chrome扩展程序,从外部源(很多)获取一些html内容。

为了提取相关信息(只是文字),我使用

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

扫描生成的HTML。我不需要将ajax结果添加到DOM中,因此我不关心外部HTML结果的任何内联脚本。但仍然是:Chrome不断投掷数百个"拒绝执行内联事件处理程序"错误。如果我只使用var $response = $(data),则错误已经出现。

我怎样摆脱它们?如何解析生成的HTML(最好使用jQuery)而不会出现这些错误?

编辑:还有其他提示吗?这些错误正在以极高的速度发生,它们甚至会显着降低浏览器的速度

1 个答案:

答案 0 :(得分:0)

至少我能够找到一种解决方法:我在使用$()之前从HTML文本中删除了所有onXXXX内联处理程序,等等,没有更多错误。

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;
}