자바 스크립트로 작성된이 두 스크립트가 다른 방식으로 동작하게 만드는 이유가 무엇인지 이해할 수 없습니다. 난시피 (다음 function f1()
, f2()
을 실행할 경우닫힌 팝업 창을 다시 열려고 시도합니다
스크립트 1
var w;
function f1() {
w = window.open("pg1.html","wind","left=0,top=0,width=480,height=480");
}
function f2() {
w.close();
}
function f3() {
w.open("pg1.html","wind","left=0,top=0,width=480,height=480");
}
스크립트 2
function f() {
var w = window.open("pg1.html","wind","left=0,top=0,width=480,height=480");
w.close();
w.open("pg1.html","wind","left=0,top=0,width=480,height=480");
}
스크립트 (1)의 경우, f1()
새로운 윈도우 객체를 생성하고 참조를 할당 그 객체를 변수 w
에 넣고 f2()
은 창 객체를 닫고 (f1()
) 닫고 팝업 창을 닫은 후 f3()
함수를 실행합니다. (w
)가 열리지 않습니다 및 Firefox 19에서 나는 오류 얻을 :
The object invoked has disconnected from its clients,
크롬 25에서 나는 오류를 얻을 : IE8에서
Error: NS_ERROR_NOT_AVAILABLE: Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIDOMJSWindow.open],
내가 오류가 발생합니다. 스크립트 2의
실행 (새 창 객체를 생성 function f()
가 생성 창을 닫습니다, 변수 w
해당 개체에 대한 참조를 할당 한 다음 다시 시도) 브라우저에서 오류가 발생하지 않습니다,하지만 파이어 폭스에서 f()
만든다 닫힌 팝업 창이 다시 열리 며 IE와 Chrome에서는 팝업 창이 닫히지 않습니다 (w
).
이 두 스크립트를 사용해보고 이러한 비정상적인 동작의 이유를 이해하는 데 도움이 될 수 있습니까?
크롬에서 오류가 발생하지 않은 이유는 --allow-file-from-file 플래그가있는 Chrome을 실행했기 때문입니다. 이 플래그가 없으면'f1()'과'f2()'가 실행 된 후에'f3()'을 실행하려고 할 때 크롬에서 다음과 같은 오류 메시지가 나타납니다 : Uncaught TypeError : Object [object global] 'open'메서드가 없습니다. 하지만 왜 script2 (함수'f()')를 실행할 때 Firefox가 닫힌 창을 다시 열어 줍니까? – user2227119
+1 ... "질문에 의미하는 것" – Algorath