运行我有希望被注入到文档之前加载脚本。即;仿佛Chrome扩展在文档开始
<script..>MYSCRIPT HERE</script>
<html>
.
.
我已经在Chrome浏览器脚本正确执行它应有的功能(我可以提醒(0)等),但,它运行在不同的环境,这是不是我想要的。我希望它作为页面在SAME环境中运行。
早些时候,我曾用在启动脚本中我用了
window.location="javascript:<MY SCRIPT HERE>"
这有效地改变了执行环境伎俩,但在过去的几天里它无法正常工作。我认为它是一个铬错误修复。有没有其他的解决方法呢?注意:我无法将脚本标签动态添加到启动脚本中的页面,因为document.body等不可用。
我想向您提供的,为什么我需要更多细节和我以前的解决方案。 HTML页面,我没有对控制:
.
.
<script>
function a(){//DOSOMETHING}
</script>
.
.
<script>
a(); <<------ I DONT WANT TO CALL THIS
</script>
珍贵的解决方案:页面“一”时 启动的JavaScript包含
window.location='javascript:const a=function(){};';<<-CONST used!!
^^这将迫使错误重新申报实际上加载,因此,当调用()时,什么都不会发生。 (巧了吧-_-?)
但现在,当我做了window.location =我实现了 “JS:..”,即使是运行在单独的ENV!
帮助! :)
你应该你的答案从“在文件装载注入”更改为“在文件开始注入”因为多数民众赞成具体是什么,他问的注入将记住这一点。伟大的东西寿,在文档开始工作(我想知道如何做到这一点)。 – PAEz 2012-02-14 07:27:33
公平点。我草率使用'load'意味着'idle',但如果你真的需要在文档的开始注入脚本,你绝对有这样的选择。 :)我会更新我的答案。 – 2012-02-14 08:44:57
感谢您的回复,迈克,尝试了解决方案,但它没有解决问题:( 测试:
。 。 开始脚本: s = document.createElement('script'); s.innerText ='const a = function(){};'; document.documentElement.appendChild(s); 它会附加到脚本的主体,但函数“a”正在重新声明。例如,如果我将函数重命名为“b”,我可以使用chrome脚本控制台访问页面中的“b”,但“a”正在被覆盖。任何方式来防止这种行为? – Akshay 2012-02-17 17:03:35