我在Greasemonkey中定义的变量(使用unsafeWindow)不起作用

时间:2011-09-15 18:08:42

标签: javascript variables greasemonkey global

我想通过我的Greasemonkey脚本添加一个这样的链接:

<a href="#" id="helloworld" onClick="alert(myGlobalVar);">Click Me!</a>

在我的剧本中我写了

unsafeWindow.myGlobalVar = "Hello world!";

但是,当我点击该链接时,它不起作用。我阅读了很多文档,但我想没有人会遇到这样的问题,因为我无法找到办法让它发挥作用。

我也尝试过这种方法:

myScript = document.createElement('script');
myScript.setAttribute("type", "text/javascript");
myScript.setAttribute("language", "javascript");;
myScript.textContent = "var myGlobalVar = 'Hello world!';";

document.body.appendChild(myScript);
document.body.removeChild(myScript);

当然这也行不通。

我错过了哪一点?我也尝试通过onClick修改其addEventListener属性,但这不起作用。

你可以看一下:http://jsfiddle.net/C65rm/ 我直接从这里复制了代码的javascript部分:http://wiki.greasespot.net/UnsafeWindow

顺便说一句,我最后想说的是,实际上我并没有尝试定义全局变量,而是尝试定义全局函数。在我的例子中,我使用变量只是为了理解它。

提前致谢。

1 个答案:

答案 0 :(得分:0)

解决。 如果有人遇到这个愚蠢的问题,我会在这里发布我的解决方案。

var myDiv = document.createElement("div");
myDiv.innerHTML = "<a href='#' onclick='myFunc();'>Alert</a>";
document.body.appendChild(myDiv);

unsafeWindow.myDiv = function() {
   myGlobalVar = "Hello world!";
   alert(myGlobalVar);
};

我的目的是将javascript函数(在我的脚本中定义)添加到网页某些部分的onClick事件中。所以上面的代码适用于Firefox。