2010-05-04 33 views

回答

6

隨着

window.open (URL, windowName[, windowFeatures]); 

你打開一個新的彈出窗口和URL你把一些HTML頁面。在該彈出式頁面中,您可以編寫一些JS,其中您可以使用window.opener變量,因此您可以從主頁訪問所有JS。 然後你就可以在頁面popuped設置一些標誌 - 例如:

index.html

<html> 
    <body> 
    <script type="text/javascript"> 
     var opened = false; 
     window.open('popup.html'); 
     // and here some loop in mooTools/jQuery/or 
     // something to look up for variable changes 
    </script> 
    </body> 
</html> 

popup.html

<html> 
    <body> 
    <script type="text/javascript"> 
     window.opener.opened = true; 
    </script> 
    </body> 
</html> 

我會做到這一點的方式。

編輯

這裏是使用PHP另一種方式:

在你popup.php,你可以設置一些標誌在會議

$_SESSION['opened'] = true; 

而且在index.php你應該寫的東西AJAX請求以一個行動,這將返回你的價值從$_SESSION

+0

有了這個循環,這是一個免費的想法 - 你可以命名你的彈出窗口併爲它添加事件'domready'。 另外,我重要的是設置一些超時。 – hsz 2010-05-04 08:22:26

+0

@haz如何設置超時? – Rella 2010-05-04 12:09:47

+0

它取決於您使用的js庫。 – hsz 2010-05-04 12:23:32

0

簡短的回答是,除非你真的想懲罰你的用戶,否則你不能。

彈出窗口通常是在客戶端使用JavaScript生成的,所以您不能知道彈出窗口是否被服務器阻止,除非您正在監視比較頁面內容請求和來自同一IP的彈出窗口內容請求。該方法會產生令人難以置信的誤報和假陰性數量,因爲如果用戶刷新頁面,他們可能不會再次彈出窗口,但他們可能第一次得到它。或者可以生成一個彈出窗口,然後該窗口中的內容可以獨立於頁面其餘部分的內容加載。結果,唯一合理的解決方案是完全不可靠的。

所以,你可以做的就是編寫一個JavaScript測試來測量一個彈出窗口是否應該從JavaScript中產生。當JavaScript觸發時,但彈出窗口不立即存在,那麼您必須觸發AJAX才能向您發送警報,以便您動態地通知彈出窗口無法加載。但是,如果我看到過這樣的代碼,我會從我的企業中將您的整個域名列入黑名單,並提醒主要安全公司您是惡意網站或已被入侵。

相關問題