2011-05-31 449 views
14

什麼導致一些瀏覽器將我的代碼視爲未經請求?合法避免彈出窗口阻止

我有一個專門用來幫助人們進行交互式會話的網站。它從用戶單擊[開始]開始,因此這是一個同意的操作。這應(1)打開一個彈出而(2)重定向的第一頁到如下面一個端頁:

<head> 
<SCRIPT language="JavaScript"> 
     function openwindow(){window.open("{INTERACTION}","interaction","resizable=0,width=800,height=600,status=0");}</SCRIPT> 
</head> 
<body> 
<FORM action="end.php" method="{METHOD}" > 
<input type="submit" class="button" 
     onClick="javascript: openwindow()" 
     value="Begin" /> 
</FORM> 
</body> 

如所述,這不是試圖打開的未請求的彈出但IE和鉻的一些菌株出現像這樣對待它。我一直在努力修復,最近消化了this post

在它Bobince評論

這些天來,你並不真的需要問這個問題:「我是不請自來的彈出窗口被阻止?」,因爲答案必然是「是」 - 所有的主流瀏覽器有彈出式窗口攔截器默認打開。最好的辦法是隻用window.open()來響應直接點擊,這幾乎總是允許的。我很高興能夠購買這個原則,因爲我只想讓我的彈出窗口打開。

什麼導致一些瀏覽器將我的代碼視爲未經請求?

我很感激你可以給我的任何幫助。 (正如你可能已經猜到的那樣,客戶端不是我的包,這個話題一直在困擾我很久)。

提前非常感謝(和手指交叉) 賈爾斯

+0

在所有主流瀏覽器中,我的作品適合我的作品。它在哪裏不適合你?您可能仍然遇到更嚴厲的第三方彈出窗口或腳本攔截器的問題,但情況總是如此。最好提供一個正常的鏈接到你的主要交互頁面,所以它仍然可以在沒有彈出窗口的情況下使用。 (就我個人而言,我會永遠使用它,因爲我是衆多用戶中完全鄙視他們的用戶之一。) – bobince 2011-05-31 20:14:39

+0

哇!感謝您的測試。我已經獲得了關於win7塊的ie9報告,只有短暫的警告信息對於大多數人來說很容易監控 – giles 2011-05-31 22:33:00

+0

在IE9/Win7 FWIW中爲我工作。 – bobince 2011-05-31 23:03:08

回答

6

沒有什麼可以做的。您可以要求您的用戶禁用彈出窗口阻止程序,或通過檢查window.open()返回的窗口對象ref來啓用彈出窗口阻止程序。

var w = window.open('http://domain.com'); 
if(!w) { 
    //an alert in this example 
    alert('oops..seems like a pop-up blocker is enabled. Please disable'); 
} 

你可以找到另一種方法,並嘗試布拉德建議。

+0

有趣的......將這項工作的所有實例的阻止? ...(如果是這樣,我可以構建一個if - else語句來打開彈出窗口或返回警報?) – giles 2011-06-01 06:46:07

+0

如果彈出窗口被阻止,您不應該獲得新窗口的引用。我不是100%肯定的,但你可以嘗試一下代碼。您可以顯示警報或使用Brad在他的回答中建議的內容 – Andreas 2011-06-01 17:41:39

+0

檢查'!w'不夠用。請參閱:http://stackoverflow.com/a/1089792/103842 – 2012-01-17 17:51:39

4

沒有什麼可以做這件事。某些彈出窗口阻止程序仍會阻止所有內容,即使響應用戶的點擊。你所能做的最好的是建議你的用戶關閉彈出窗口攔截器,或者找到一種不同的方式來做你想做的事情。一種流行的方法是在您的頁面上顯示其他所有內容的div,例如Lightbox

many jQuery plugins這使這很容易。

+0

+1。 Facebox是一個很好的解決方案。 http://defunkt.io/facebox/ – 2011-05-31 20:14:37

+0

好的,我明白你的意思了,但這個解決方案是否安全?我們的許多用戶仍然大約是IE6 – giles 2011-05-31 22:38:51

+0

@giles,jQuery通常對IE6工作正常,我想大多數插件也是如此。測試它,如果它不起作用,請嘗試不同的插件或改變你的方法。 – Brad 2011-06-01 00:02:10

0

你(至少?)2個選項來處理這個:

  • ,如果你想使用彈出窗口,以保持,顯示您的用戶帶來非常明顯的警告,他們指出說明如何配置自己的瀏覽器將您的域名列入白名單(例如,當您獲得新的權限,甚至像Chrome瀏覽器顯示的動作橫幅一樣,它們出現在StackOverlow.com頂部的橫幅 - 它們也是基於網頁的);
  • 使用iFrame並根據用戶的點擊加載其內容。
相關問題