jquery 觸發a標簽點擊事件,彈出頁面


<a id="alink" href="abc.aspx" style="visibility: hidden;">下一步</a>
$("#alink").click(); // 觸發了a標簽的點擊事件,但是沒有觸發頁面跳轉
document.getElementById("alink").click(); //既觸發了a標簽的點擊事件,又觸發了頁面跳轉

把 “下一步” 改為 “<span id="spanId">下一步</span>” 即給A標簽中的文字添加一個能被jQuery捕獲的元素,然后$("#spanId").click();,才可以觸發頁面跳轉。



原文:不被瀏覽器屏蔽攔截的打開窗口的方法


之所以會想要寫這篇文章,是因為我在最近的項目中使用Js打開新的窗體時被攔截了,因此,讓我產生了對瀏覽器攔截屏蔽新窗體的興趣,想了解一下為什么會被攔截。

 說到在新的窗口打開新的網頁,通常是使用超鏈接標簽的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的“窗口就行”。
如果有這方面的需求的,看到這篇文章應該會或多或少的有所收獲,如果找不到解決方案,請給我留言,希望能夠共同探討。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com