我正在开发一个第三方网站上的铬应用程序。
我尝试更改的文档的页面格式如下:
<head>
.
.meta data here
.
</head>
<body>
<script type="text/javascript">
function a1(){
..contents of function a1
}
</script>
.
.other contents of body
.
<script type="text/javascript">
a1(); // <-- I don't want this to be executed
</script>
</body>我的问题是,我希望加载整个页面,除了调用a1()的函数;
因此,我想到了一个简单的解决方案:在函数定义ie;function a1(){..}之前,我想将a1创建为一个不做任何事情的常量函数,从而使a1()调用变得无用。
问题是,如果我在run_at document_start的js中将函数定义为常量,执行环境就会不同,因此它不会影响页面。
因此,在同一执行环境中运行的替代方法是使用innerHTML+=“...”注入代码。
另一种选择是使用"createElement“构造一个脚本元素,src是一个外部js文件,在执行之前必须加载该文件。
这两种方法都不起作用,因为解析树不是在run_at document_start脚本中创建的。
所以,我想到了另一个解决方案。我为DOMModifySubTree事件添加了侦听器,希望改变解析顺序(我知道,这听起来很有趣:),这样函数就不会被调用。帮不上忙。
那么,我的问题是如何防止调用a1()函数?附言-我无法联系第三方网站开发人员。
发布于 2012-02-23 22:25:33
很抱歉回复得太晚了。我最初跳过函数调用的方法是在文档开始时运行脚本并将其注入到“文档”中(因为JS在单独的环境中运行)。在我使用注入脚本中
const a1=function(){};这样,当函数被再次声明时,它不会被覆盖,因此函数不会被执行(即,它正在执行我们的伪函数),从而本质上破坏了代码。:)
发布于 2011-10-23 15:50:12
Greasemonkey就是你要找的东西。
这是一个火狐扩展,在你选择的网页中注入你自己的脚本。
访问wiki.greasespot.net开始编写脚本。
幸运的是,Chrome本身就支持Greasemonkey脚本。有关详细信息,请参阅this page。
https://stackoverflow.com/questions/7864970
复制相似问题