1. 程式人生 > >解決彈出的窗口會被瀏覽器阻止的問題

解決彈出的窗口會被瀏覽器阻止的問題

syn eww 如果 bsp als 返回結果 color new com

常用的打開新窗口的方式

1、window.open()

2、用a標簽的target="_blank"

  在模板中插入一個a標簽,然後javascript去觸發a鏈接的click,實現跳轉。(該方法在jQuery跟js中有坑...)

<a href="http://wuliv.com" id="openNew"></a>
$(#openNew)[0].click()
document.getElementById(openNew).click()

$("#openNew")得到的是一個jquery的對象,jquery本身對該對象的一些屬性進行了封裝,所以會導致click失效;而使用js對象 document.getElementById("a") 則不會存在該問題

onclick()也可以觸發事件,但是onclick跟click不同;
onclick觸發的是方法,而click先觸發按鈕的點擊事件,再觸發方法。
如果該對象沒有綁定onclick方法則無法被觸發,而click沒有綁定方法也可以觸發。

原因:當瀏覽器檢測到非用戶操作產生的新彈出窗口,則會對其進行阻止。因為瀏覽器認為這不是用戶希望看到的頁面

結果:當點擊事件1s之後再自動觸發這個跳轉事件,瀏覽器會攔截

解決方法:

1、ajax請求設置成同步的方式 async: false

2、window.open()

請求時先打開一個空頁面
var newWindow = window.open();
請求返回結果之後
newWindow.location.href 
= fileUrl

解決彈出的窗口會被瀏覽器阻止的問題