2012-01-25 69 views
3

要求:彈出窗口將從父窗口打開,當窗口的焦點丟失時它應該關閉。 (即使在另一個應用程序窗口打開或聚焦時也會發生這種情況)。如何關閉彈出窗口,當焦點從其中消失時

嘗試代碼: <body onBlur='javascript:window.close();'>

問題: 在彈出的身體內點擊使彈出關閉。

兼容性: ie6及以上版本,firefox。

我得到了解決方法http://pro-thoughts.blogspot.com/2006/10/incorrect-behavior-of-windowonblur.html

var active_element; 
var bIsMSIE; 

function initiateSelfClosing() { 
    if (navigator.appName == "Microsoft Internet Explorer") { 
    active_element = document.activeElement; 
    document.onfocusout = closeWnd; 
    bIsMSIE = true; 
    } 
    else { window.onblur = closeWnd; } 
} 

function closeWnd() { 
    if (window.opener != null) { 
    if (bIsMSIE && (active_element != document.activeElement)) { 
     active_element = document.activeElement; 
    } 
    else { 
     window.close(); 
    } 
    } 
} 


<body onload="initiateSelfClosing()"> 
</body> 

但這裏也有一個問題是存在的,如果是在頁面的打印按鈕,如果在打印時點擊>然後取消打印作業,彈出窗口正在關閉。

可有一個人幫我請...

回答

1

的模糊事件

var win = window.open("URL"); 
    $(window).blur(function() { 
    win.close(); 
    }); 
+1

謝謝你..但你能幫我用javascript嗎? –

+0

我不確定,但文件沒有onblur事件。 – Pranav

0

使用文檔您可以onblur事件不重視身體,但
可以附加上的onblur窗口的事件的功能。

<script type="text/javascript"> 
    function closeme() 
    { 
     window.close(); 
    } 
    window.onblur=closeme; 
</script> 

既然你編輯你的問題,你可以得到更多的幫助here

+0

感謝您的幫助。 但是,這也顯示了我的代碼段所示的相同問題。彈出窗口在頁面內點擊關閉 –

1

在sathishkumar的回答

1.我們需要win轉換爲jQuery對象小改正

2.適用模糊事件上jqvariable而不是window

3. this.close是不夠好的onblur事件的定義

var win = window.open("URL"); 
var jqwin = $(win); 
    $(jqwin).blur(function() { 
    this.close(); 
}); 
相關問題