Ошибка JavaScript: win1 не определен - PullRequest
0 голосов
/ 10 июля 2011

это моя функция;

function ButtonClickAction3 (zEvent) {  

    var var4 = prompt ("text");
    var var1 = prompt ("text")
    var var2 = prompt ("text");
    var var3 = prompt ("text");

    win1 = window.open("MYURL1,"", "win1", "width=100,height=100,resizable");
    setTimeout("win1.close()",500);
    win2 = window.open("MYURL2,"", "win2", "width=100,height=100,resizable");
    setTimeout("win2.close()",500);
    win3 = window.open("MYURL3,"", "win3", "width=100,height=100,resizable");
    setTimeout("win3.close()",500);

}

Когда я использую этот код с greasemonkey;

win1 = window.open("MYURL,"", "win1", "width=100,height=100,resizable");

после того, как окно1 открыло, команда "win1.close ()" не работает для него.Это говорит, что "win1 не определен".

Но когда я открываю окно с этим кодом из консоли,

win1 = window.open("MYURL1,"", "win1", "width=100,height=100,resizable");

win1 определен, и я могу закрыть его с помощью win1.close()

Как я могу использоватьчто с greasemonkey?

Ответы [ 2 ]

3 голосов
/ 10 июля 2011

Сначала вам нужно указать переменную win1 с ключевым словом var.Во-вторых, хорошей практикой является передача функций в виде функций, а не строк: eval() 'd

Попробуйте:

var var4 = prompt ("text");
var var1 = prompt ("text");
var var2 = prompt ("text");
var var3 = prompt ("text");

var win1 = window.open("MYURL1", "win1", "width=100,height=100,resizable");
setTimeout(function(){win1.close();},500);

var win2 = window.open("MYURL2", "win2", "width=100,height=100,resizable");
setTimeout(function(){win2.close();},500);

var win3 = window.open("MYURL3", "win3", "width=100,height=100,resizable");
setTimeout(function(){win3.close();},500);
0 голосов
/ 10 июля 2011

Я бы просто использовал такой синтаксис, чтобы всегда быть на безопасном пути:

window["win1"] = window.open(...);

Затем закрыть его:

if (window["win1"])
    window["win1"].close();

Присваивая переменную window, вы заставляете ее иметь глобальную область видимости.

...