js打开新窗口并且不被拦截
js打開(kāi)新窗口并且不被攔截
window.open是javascript函數(shù),該函數(shù)的作用是打開(kāi)一個(gè)新窗口或這改變?cè)瓉?lái)的窗口,如果你直接在js中調(diào)用window.open()函數(shù)去打開(kāi)一個(gè)新窗口,瀏覽器會(huì)攔截你,那么如何避免呢。
注意,只有直接使用js調(diào)用 window.open(url); 打開(kāi)新窗口時(shí),才會(huì)被攔截,如果是改變?cè)眍~窗口:window.open(url,‘_self‘); 則不會(huì)被攔截。
那么 js調(diào)用 window.open(url); 打開(kāi)新窗口,如何才能不會(huì)瀏覽器攔截呢?
瀏覽器會(huì)攔截你,是認(rèn)為你將彈出廣告等用戶不想得到的窗體,所以如果不想讓瀏覽器攔截你,你可以將這個(gè)函數(shù)改為用戶點(diǎn)擊時(shí)觸發(fā),這樣瀏覽器就認(rèn)為是用戶想訪問(wèn)這個(gè)頁(yè)面,而不是你直接彈出給用戶。
0.最好的解決辦法
var form = document.createElement(‘form‘);form.action = ‘www.baidu.com?id=1‘;form.target = ‘_blank‘;form.method = ‘POST‘;document.body.appendChild(form);form.submit();這種方式,如果需要傳遞參數(shù)時(shí),需要使用 POST 方法, 默認(rèn)的get方法, 無(wú)法傳遞參數(shù)。也就是新頁(yè)面的url中沒(méi)有參數(shù)部分。
另外,Ajax下載文件時(shí)也是用form 表單來(lái)模擬下載。
1.onclick
常用的方法就是在超鏈接里加入onclick事件,如這樣用戶點(diǎn)擊這個(gè)超鏈接,瀏覽器會(huì)認(rèn)為它是打開(kāi)一個(gè)新的鏈接,所以就不會(huì)攔 截。
2.setTimeout
setTimeout(‘window.open(url);‘, 500);使用 setTimeout 包裝一下,也可以防止被瀏覽器攔截。注意這里的超時(shí)時(shí)間不能太短,否則也會(huì)被攔截。
3.location
可是有時(shí)候我們會(huì)遇到想要彈出一個(gè)窗口,可是卻是在onckick事件執(zhí)行后,才去彈出來(lái)的,這時(shí)就會(huì)被瀏覽器攔截,我們可以通過(guò)下面的方法來(lái)避免,就是 先用window.open打開(kāi)一個(gè)窗口,然后修改地址。如
https://www.cnblogs.com/digdeep/p/4590337.html
總結(jié)
以上是生活随笔為你收集整理的js打开新窗口并且不被拦截的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 项目4-复数模板类
- 下一篇: 网络-数据链路层回顾