瀏覽器開啟新視窗被攔截問題
阿新 • • 發佈:2018-12-12
1. window.open() 方法和 form表單的submit方法
需要使用者點選事件觸發,將其直接寫在點選事件內部,未被攔截
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> </style> </head> <body> <button id="btn">點選</button> <script type="text/javascript"> var btn = document.getElementById('btn') btn.onclick = function() { setTimeout(function(){ window.open('http://www.baidu.com') },1000) } </script> </body> </html>
如果在js中的ajax請求的success方法內部使用這兩種方法均會被攔截,將ajax請求設定為同步,即可開啟視窗不被攔截
let requestUrl = commonRequestUrl; let msg =''; $.ajax({ async: false, type: "GET", url: requestUrl, dataType: "json", success: function(data) { let code = data.code; let msg = data.msg; let content = data.content; msg = content.msg window.open(`http://127.0.0.1/assets/index.html?msg=${msg}`); } });
2. a連結開啟新標籤頁的click方法
(1)如果需要在點選事件的時候進行一些操作,且不需要考慮傳送請求的情景,可在a連結的click方法內進行操作
<a href='http//:www.baidu.com' onclick='goBaidu' target='_bank'>
// 該方法在原頁面執行,與新開頁面無關
goBaidu() {
localstorage.setItem('name': 'zs')
}
(2)如果需要等待ajax請求或者程式碼執行結果 ,在a的click方法內部直接使用window.open()或者表單的submit即可(不要寫在ajax方法內部)
程式碼同上第二個程式碼段