window.open(url)打開鏈接被瀏覽器攔截解決方案


瀏覽器為了維護用戶安全和體驗,禁止在JS中直接使用window.open(url)來打開新的鏈接(window.open(url,”_self”)改變當前的窗口是可以生效的)。下面采用幾種變通方法解決:

1.表單提交的方式

var form = document.createElement('form');
form.action = 'www.baidu.com?id=1';
form.target = '_blank';

form.method = 'POST';

document.body.appendChild(form);
form.submit();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

這種方式,如果需要傳遞參數時,需要使用 POST 方法, 默認的 GET 方法無法傳遞參數。也就是新頁面的url中沒有參數部分。

另外,Ajax下載文件時也是用form 表單來模擬下載。

2.直接將打開窗口操作放在按鈕/鏈接的onclick事件中

如:

<a href="javascript:void(0)" onclick="window.open(url)"></a>
  • 1

3.延遲這個打開操作

如:

setTimeout('window.open(url);', 500); // 延遲時間不能太短 否則也會被攔截
  • 1

4.通過JS打開新窗口會被攔截,換一種實現方式

var tempwindow=window.open('_blank'); // 先打開頁面
tempwindow.location='http://www.baidu.com'; // 后更改頁面地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM