如何在页面加载之前替换javascript节点

时间:2011-10-23 07:01:03

标签: javascript

我正在尝试创建一个Chrome扩展程序,它将删除/阻止/隐藏一段javascript,以便在访问特定网站时不会加载。有问题的代码在这里:

<script type="text/javascript">
var _0xd6Bh=["\x74\x6F\x70","\x67\x74\x74\x50\x3A\x2F\x2F\x76\x69\x64\x65\x6F\x2E\x73\x77\x61\x67\x62\x75\x63\x6B\x73\x2E\x63\x6F\x6D\x2F\x62\x6C\x6F\x62\x6B\x2E\xv8\x74\x6D\x6C"];if(window[_0xd6Bh[0]]!=window){location=_0xd6Bh[1];} ;
</script>

我不确定这是否是正确的方法,但这是我的代码:

document.write(string.replace(/var _0xd6Bh\=\[\".*/g, XXX));

因此,我们的想法是在页面加载之前用XXX替换javascript并最终阻止它执行。到目前为止,这不起作用,页面继续我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果脚本标记位于头部,则以下代码可以使您走上正确的轨道。如果它在正文中,只需将document.head替换为document.body即可。你当然可以循环

var scripts = document.head.getElementsByTagName("script");
/* //Uncomment the code below if you want to add body script elements
var bodyScripts = document.body.getElementsByTagName("script");
scripts.concat(bodyScripts);
*/
var replaceWithThis = "var _0xd6Bh = '';";
for(var i=0, l=scripts.length; i<l; i++)
{
    scripts[i].innerHTML.replace(/^var _0xd6Bh.*/gi, replaceWithThis)
}