a鏈結判斷後新開頁面被攔截

2022-05-05 00:00:15 字數 1141 閱讀 1289

說到在新的視窗開啟新的網頁,通常是使用超連結標籤的 target ,_blank 實現。當點選了超連結時可以自動的開啟新的視窗,但是實際上,需要在執行了某些操作之後通過js的方式開啟。

而通過js的方式開啟方式比較常用的就是通過window.open 開啟新的視窗。這裡說明一下,在通常情況下,使用window.open 的方法,是不會被瀏覽器的遮蔽攔截,只有在惡意彈窗的時候,才會被遮蔽。當使用者進行點選觸發開啟的視窗,是能被瀏覽器接受的。網路上有很多文章說什麼「強制彈窗」,「不會被攔截」,我看了一下,覺得該遮蔽的還是會遮蔽,我想定個時間,讓它自動彈窗,還是不行。我分析一下他們的原理,一種是通過超連結,在js中click()觸發,另一種是使用js通過form的submit()觸發,但是這不能繞開瀏覽器的遮蔽。因為他們的原理是一樣的,不是使用者即時觸發的。瀏覽器很容易就能發現和阻止。

人們常說的會被瀏覽器攔截主要是因為不是由使用者發生的操作開啟的視窗,包括定時器,ajax非同步執行之後等發生的開啟視窗的操作。但是比不是所有的瀏覽器會攔截。經過本人對各大瀏覽器的測試,非使用者觸發操作彈窗, 遨遊通過,

ie通過 ,獵豹不通過 ,

chrome不通過,360瀏覽器不通過,火狐不通過。一般正常的操作是不會被遮蔽的,但是惡意彈窗很容易被瀏覽器識別,如果想不經過使用者觸發,直接彈窗,只能期待使用者是使用ie和遨遊瀏覽器的。

現在總結一下,常見正常彈出視窗失效的原因:

1.使用window.open,但是定義視窗名,也就是在開啟視窗傳入name引數,因為window.open只能開啟唯一的窗體名為name的窗體。所以有些人會以為被瀏覽器攔截遮蔽了。

2.使用非同步的ajax,通過ajax向伺服器請求,在請求完成後再開啟視窗的操作,如果是使用非同步的方式,將出現延時,這是瀏覽器就會以為不是使用者觸發的操作,這時只要設定同步的方式即可。筆者就是因為這個原因。

可能存在替代方案:

既然想到彈窗,固然是因為有這方面的需求,目前『瀏覽器無法攔截的彈出視窗』是不可能的,能不能找到替代方案。這裡提供兩個方案:

1.如果是彈窗廣告,一般的做法是在頁面document繫結click事件或者的srcoll事件,因為一般開啟網頁都會點一下或者是滾一下滑鼠。所以就很容易的彈窗了(這裡以技術出發,筆者代表絕大部分使用者不接受這種廣告方式)。

2.如果是彈出通知資訊,就更容易,不用這麼鬼鬼祟祟了,直接彈出div

的「視窗就行」。

C 迴圈語句 先判斷後執行 while迴圈

while迴圈是乙個標準的迴圈語句,先判斷是否迴圈,如果滿足條件就執行迴圈,不滿足就跳出迴圈,執行迴圈體外的語句。語法如下 while 條件表示式 using system class sample console.writeline 從0到100的和是 sum 上面的程式是先判斷while條件是否...

頁面啟用判斷

第一種 js版 頁面啟用判斷 var hiddenproperty hidden in document hidden webkithidden in document webkithidden mozhidden in document mozhidden null var visibilityc...

Wordpress頁面判斷

is single 判斷是否是文章頁面 is single 2 is single 2 判斷是否是具體文章 id 2 的頁面 is single 判斷是否是具體文章 標題為beef stew 的頁面 is single beef stew 判斷是否是具體文章 slug為beef stew 的頁面 i...