解析具有内联事件处理程序的HTML

时间:2015-02-24 10:48:05

标签: javascript jquery html google-chrome-extension jquery-selectors

我正在构建一个chrome扩展,我需要从网页中获取并解析一些html。决定使用jquery。

$(htmlString).find(".some-table");

问题是我在运行此代码时会收到以下警告。

  

拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“script-src'self'chrome-extension-resource:”。要启用内联执行,需要使用'unsafe-inline'关键字,散列('sha256 -...')或nonce('nonce -...')。

似乎“htmlString”包含一些内联事件处理程序,在解析它时,chrome会抛出此警告。
我无法控制“htmlString”里面的内容,只需要从中检索一些信息。有没有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

使用显式$.parseHTML()。引用文档:

  

大多数接受HTML字符串的jQuery API都会运行HTML中包含的脚本。 <{1}}不会在解析的HTML中运行脚本,除非jQuery.parseHTML明确为真。

然而,即使这样做也不安全。

  

但是,在大多数环境中仍然可以间接执行脚本,例如通过keepScripts属性。调用者应该注意这一点,并通过清除或转发来自URL或cookie等来源的任何不受信任的输入来防范它。

因此,虽然它可能对特定输入有所帮助,但您应该考虑是否真正需要这样的DOM节点的显式创建。它可能会产生各种令人讨厌的边缘情况。