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

如何在页面加载之前替换javascript节点,javascript,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\

我正在尝试创建一个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>

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

如果脚本标记在头部,下面的代码应该会让您走上正确的轨道。如果在正文中,只需将
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)
}
var scripts=document.head.getElementsByTagName(“脚本”);
/*//如果要添加正文脚本元素,请取消注释下面的代码
var bodyScripts=document.body.getElementsByTagName(“脚本”);
脚本。concat(bodyScripts);
*/
var replacetwiththis=“var _0xd6Bh=”;

对于(var i=0,l=scripts.length;离子)这一行
string replaceWithThis=“var\u 0xd6Bh=”;
我收到一个错误对不起,应该是var:
var replaceWithThis=“var\u 0xd6Bh=”;
我不确定它是否正常工作。你可以在这里测试它。我查看了jsbin代码。不幸的是,在那个例子中,你无法访问iframe,因为它是一个不同的域。我对Chrome扩展没有太多经验,但如果可以使用扩展,你基本上必须在JS运行之前访问HTML。即使这样,我也很抱歉不确定这是否可能。
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)
}