我创建了一个替换页面功能的 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