我正在尝试拼凑一个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”:是
}
]
}
答案 0 :(得分:2)
不能。
在大多数情况下*,<script>
元素在解析器遇到它们之后就立即执行,直到完全构建DOM树。 (除其他事项外,(这样才能使document.write()
正常工作。)扩展没有中断中断此过程的机会。
(Here is the relevant portion of the HTML5 specification.)
如果要阻止脚本执行,一种可行的方法可能是设置不允许脚本执行的内容安全策略。请记住,尽管如此,这也会禁用内联事件处理程序(例如onclick
)。
*:例外情况是设置了async
属性的脚本。不过,大多数脚本都没有。