2013-11-15 97 views
0

如果我在通過javascript打開的鏈接上有一個處理程序,那麼所有的作品都會彈出窗口。 但是,如果在處理程序中,我做了一個Ajax請求,並且在完成之後,我打開一個新窗口,瀏覽器將其阻止。我打開它:爲什麼有時候瀏覽器阻止彈出窗口,有時不是?

openedWindow = window.open("/interne/appsocial/aggrega/Aggrega" + pageTitle + ".aspx", "popup", "width=" + popupYTSizeWidth + ", height=" + popupYTSizeHeight + ", top=" + top + ", left=" + left); 

你知道爲什麼嗎?我能解決這個問題嗎?

+1

這是您無法控制的瀏覽器設置。 – Liam

+0

但是爲什麼只用一個處理程序呢?該死的... – markzzz

+0

如果你能控制它,什麼會阻止惡意網站產生彈出全國各地的?任何在21世紀初訪問(ahem)*專家*網站的人都會知道我的意思 – Liam

回答

2

如果我在通過JavaScript打開的鏈接上有一個處理程序,那麼所有的作品都會顯示出來。但是,如果在處理程序中,我做了一個Ajax請求,並且在完成它之後,我打開一個新窗口,瀏覽器阻止它。

默認情況下,當前瀏覽器中的彈出窗口阻止程序傾向於在彈出窗口被顯式用戶交互f.e.所觸發時允許彈出窗口。點擊一個鏈接 - 可以假設,這更可能是一個用戶實際想要打開的彈出窗口,而不是彈出窗口,該窗口只會「突然出現」,這更可能是惱人的/垃圾郵件。

但你的AJAX請求是異步,沒有更多的直接之間單擊您的用戶,使彈出的開放連接,以及 - 更晚發生,這是由觸發的原代碼塊之後點擊已完成執行。因此,它會被阻止,因爲瀏覽器無法區分它與其他類型的「壞」彈出窗口,它們在沒有用戶交互的情況下得到openend。

+0

好的答案,我沒有意識到這種區別+1 – Liam

相關問題