呈现前无法删除<script>元素

时间:2018-10-31 17:55:14

标签: javascript google-chrome google-chrome-extension

我正在尝试拼凑一个chrome扩展程序,该扩展程序将在渲染所有脚本元素之前将其删除...我想我已经很接近了,因为看起来我是在提前捕获它们的,但是我无法获取它们删除:

content.js

  var mo = new MutationObserver(process);
mo.observe(document,{subtree:true,childList:true});
document.addEventListener('DOMContentLoaded',function(){mo.disconnect()
 

});

 功能过程(突变){
    对于(var i = 0; i  

manifest.json

  {
  “ name”:“测试扩展”,
  “ version”:“ 1.0”,
  “ description”:“这只是一个测试”,
  “ manifest_version”:2
  “ content_scripts”:[
    {
      “ matches”:[“ http://myRealUrl.com/internal/default.asp?*”],
      “ js”:[“ content.js”],
      “ run_at”:“ document_start”,
      “ all_frames”:是
    }
  ]
}
 

1 个答案:

答案 0 :(得分:2)

不能。

在大多数情况下*,<script>元素在解析器遇到它们之后就立即执行,直到完全构建DOM树。 (除其他事项外,(这样才能使document.write()正常工作。)扩展没有中断中断此过程的机会。

Here is the relevant portion of the HTML5 specification.

如果要阻止脚本执行,一种可行的方法可能是设置不允许脚本执行的内容安全策略。请记住,尽管如此,这也会禁用内联事件处理程序(例如onclick)。


*:例外情况是设置了async属性的脚本。不过,大多数脚本都没有。