窗口被攔截的解決方法

窗口被攔截的緣由:經過window.open(url)的方式,打開一個新的頁面,可是大部分瀏覽器會遭遇攔截。由於大部分現代的瀏覽器(泛指 Chrome / Firefox / IE 10+ / Safari)都默認開啓了阻止彈出窗口的策略,緣由是 window.open 被廣告商濫用,嚴重影響用戶的使用。這個阻止彈出窗口的操做,並非直接封殺 windw.open(),而是會根據用戶的行爲來判斷此次 window.open() 是否屬於流氓操做。前端

window.open並非所謂的會遭遇攔截,它攔截是有條件的,就是點擊的時機跟你open的時間差,若是有時間差(有些瀏覽器容許一點點的時間差),瀏覽器纔會認爲不安全,就會攔截你。

解決辦法

方式一:使用jQuery模擬點擊事件jquery

jquery是提供了模擬click事件的方法的,$(selector).click()。只不過這裏咱們要注意的是當要觸發a標籤點擊的時候,<a>標籤內必定要有內容,而且要模擬裏面的內容被點擊而不是<a></a>被點擊。
$("span").click();複製代碼

方式二:使用原生的js模擬點擊事件後端

document.getElementById("test2").click();複製代碼

方式三:createEvent + initEvent + dispatchEvent瀏覽器

document.createEvent用於建立事件,在DOM Level 2 的事件中就有HTMLEvents,MouseEvents,UIEvents事件類型。

initEvent()方法用於初始化經過DocumentEvent接口建立的Event的值。

dispatchEvent則是觸發對應元素上面的某個事件。複製代碼

方式四:後端重定向安全

這種方式須要後端協做,先提供一個接口地址,前端經過a標籤跳轉到該地址,後端經過運算以後,直接重定向到目標地址,這也是方便快捷的方法。複製代碼
相關文章
相關標籤/搜索