【发布时间】:2010-08-22 17:57:36
【问题描述】:
我创建了一个替换页面功能的 Greasemonkey 脚本:
(function() {
var oldFunc = func;
func = function() {
oldFunc();
// other stuff
};
)();
我一直希望这个脚本在 Gresemonkey 和 Chrome 中都能工作,并且读到 Chrome 不支持 unsafeWindow,所以一直通过将函数转换为字符串并使用 setTimeout 将脚本注入页面:
setTimeout("(function(){var old=func;func=function(){old();/*other stuff*/}}())", 0);
这在 Greasemonkey 中运行良好,但在 Chrome 中完全没有给我任何东西。它显然没有触发,但日志中也没有出现任何内容。我已经尝试了许多其他的注入方式,但没有任何效果。 (为了测试,我还在函数顶部添加了alert()。)
-
setTimeout(..., 0)— 没什么 - 在范围内运行函数,不注入页面 - 没有警报,但控制台中“未定义函数”
-
document.href = "javascript:..."— 没什么 -
document.body.addEventListener("load", ...)— 没什么
所有这些都是@run-at document-end。
不幸的是,这是我的第一个 Chrome 用户脚本,我不知道如何调试它,即使经过一个小时左右的谷歌搜索和搜索。有什么帮助吗?
实际脚本,目前在 Greasemonkey 中工作:http://pastebin.com/HtLVjYHg
【问题讨论】:
标签: google-chrome greasemonkey userscripts