Greasemonkey & global variables

gombost picture gombost · Jul 23, 2010 · Viewed 20.9k times · Source

I'm noob with JavaScript and Greasemonkey and I'd like to write a simple script.

I know that Greasemonkey wraps your code with an anonymous function so your variables won't exist after leaving the current page. However, I need a global variable. I tried to use the unsafeWindow and window objects something like this:

if (window.myVar == undefined) {
   window.myVar = "myVar";
}

If I refresh the page the condition's value is always true.

Is there a way to use global variables with Greasemonkey?

Answer

erikvold picture erikvold · Jul 24, 2010

You have to use unsafeWindow in order to create a global variable that is available to the page's javascript scope.

if (unsafeWindow.myVar == undefined) {
   unsafeWindow.myVar = "myVar";
}

But you can't expect this variable to exist when you refresh the page, because normal javascript does not work that way. If you want to save some data across page loads then I suggest that you use GM_setValue & GM_getValue