使用Greasemonkey覆盖函数(document.hasFocus)

时间:2012-06-29 17:43:35

标签: javascript greasemonkey

我需要为greasemonkey创建一个脚本,该脚本使用每次都返回true的方法覆盖默认的document.hasFocus。

这里我尝试使用的代码:

var script = document.createElement('script');
script.type = "text/javascript";
script.innerHTML = 'function document.hasFocus{return true;}';
document.getElementsByTagName('head')[0].appendChild(script);

但它不起作用......

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:1)

语法已关闭,可能没有<head>标记。另外,尽可能避免使用innerHTML。所以使用:

var scriptNode          = document.createElement('script');
scriptNode.type         = "text/javascript";
scriptNode.textContent  = 'document.hasFocus = function () {return true;}';
var targ                = document.getElementsByTagName ('head')[0] || document.body;
targ.appendChild (scriptNode);

但是,在这种情况下,使用unsafeWindow(Firefox Greasemonkey)几乎没有风险。所以整个脚本代码可以是:

unsafeWindow.document.hasFocus = function () {return true;};

如果它仍然“无效”,请描述 它不起作用(预期,与实际,结果,错误代码等)。链接到目标页面。