2010-11-23 78 views
1

我使用javascript window.open方法来打开让说http://www.google.com [它始终将是一些外部URL]的JavaScript父页面上的警报,当孩子弹出关闭

我都存储在一个窗口对象的引用变量,问题是该变量永远不会在父页面上为空,我不能提醒用户弹出已关闭。

下面的代码

 
    
     var winFB; 
     var winTWt; 
     var counterFB = 0; 
     var counterTWT = 0; 
     var timerFB; 
     function openFB() { 

      if (counterFB == 0) { 
       winFB = window.open("http://www.google.com"); 
       counterFB = 1; 
      } 
      if (counterFB > 0) { 
       alert(winFB); 
       if (winFB == null) { 
        counterFB = 0; 
        clearTimeout(timerFB); 
        alert("Window Closed"); 
       } 
      } 
      timerFB= setTimeout("openFB()", 1000); 
     } 

    

我不能把任何JavaScript代码的弹出/子窗口。

希望有人能帮助我在此

回答

4

窗口变量不被清零了,当它关闭,但其.closed propertytrue,所以只要改变你的支票是该属性,像这样:

var winFB; 
var winTWt; 
var counterFB = 0; 
var counterTWT = 0; 
var timerFB; 
function openFB() { 
    if (counterFB == 0) { 
     winFB = window.open("http://www.google.com"); 
     counterFB = 1; 
    } 
    if (counterFB > 0) { 
     if (winFB.closed) { 
      counterFB = 0; 
      clearTimeout(timerFB); 
      alert("Window Closed"); 
     } 
    } 
    timerFB = setTimeout(openFB, 1000); 
} 

还要注意setTimeout()变化,通过在尽可能(几乎总是),而不是一个字符串,你有作用域少了很多问题的功能。

1
//in the parent 
winFB = window.open("http://www.google.com"); 

//in the child window you can access 
var _parent = window.opener.document; 

//also use the onunload event in the child window 
onunload="doSomething()" 

希望这个给你一些方向..

+0

我不能把儿童窗口 – Sandhurst 2010-11-23 10:17:43