摘要:直接在代碼中執行是會被瀏覽器攔截的,瀏覽器是默認屏蔽彈出窗口,但是是用戶手動觸發,就不會攔截,如果是程序自動執行,則會攔截。
問題
有時候在開發業務時,由于產品體驗,要求自動打開新窗口,而不希望用戶手動點擊。
直接在代碼中執行:
window.open("http://www.baidu.com")
是會被瀏覽器攔截的,瀏覽器是默認屏蔽彈出窗口,但是是用戶手動觸發,就不會攔截,如果是程序自動執行,則會攔截。
解決那么根據上述規則,那就在用戶有點擊動作時打開這個窗口,偽代碼如下:
test document.getElementById("blank").onclick=function(){ window.open(...) }
示例在此
不過,這方式在異步編程中還是會被攔截,所以在用戶點擊發送請求的同時打開一個新窗口,然后在回調函數中修改新窗口的地址,偽代碼如下:
test document.getElementById("blank").onclick=function(){ const newwin = window.open("about:blank"); $.ajax({ type: "post", url: "xxxx", data: {...}, }).then((data)=>{ ... newwin.location.href = data.href; // 調用location })
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/83449.html
摘要:原因分析深入研究當瀏覽器檢測到非用戶操作產生的新彈出窗口,則會對其進行阻止。但是,被瀏覽器攔截我們代碼中要彈出的窗口并不是程序員所希望的。 現象 最近在做項目的時候碰到了使用window.open被瀏覽器攔截的情況,搞得人無比郁悶啊,雖然在自己的環境可以對頁面進行放行,但是對用戶來說,不能要求用戶都來通過攔截。何況當出現攔截時,很多小白根本不知道發生了啥,不知道在哪里看被攔截的頁面,簡...
摘要:使用包裝一下,也可以防止被瀏覽器攔截。注意這里的超時時間不能太短,否則也會被攔截。我們會遇到想要彈出一個窗口,可是卻是在事件執行后,才去彈出來的,這時就會被瀏覽器攔截,我們可以通過下面的方法來避免先用打開一個窗口,然后修改地址。 最近公司開發的一個項目,平凡用到下載各種類型的文件,但是例如.txt,.jpg,.pdf格式的文件呢瀏覽器會在當前窗口直接打開,影響用戶體驗,嘗試各種方案和百...
摘要:使用包裝一下,也可以防止被瀏覽器攔截。注意這里的超時時間不能太短,否則也會被攔截。我們會遇到想要彈出一個窗口,可是卻是在事件執行后,才去彈出來的,這時就會被瀏覽器攔截,我們可以通過下面的方法來避免先用打開一個窗口,然后修改地址。 最近公司開發的一個項目,平凡用到下載各種類型的文件,但是例如.txt,.jpg,.pdf格式的文件呢瀏覽器會在當前窗口直接打開,影響用戶體驗,嘗試各種方案和百...
摘要:使用包裝一下,也可以防止被瀏覽器攔截。注意這里的超時時間不能太短,否則也會被攔截。我們會遇到想要彈出一個窗口,可是卻是在事件執行后,才去彈出來的,這時就會被瀏覽器攔截,我們可以通過下面的方法來避免先用打開一個窗口,然后修改地址。 最近公司開發的一個項目,平凡用到下載各種類型的文件,但是例如.txt,.jpg,.pdf格式的文件呢瀏覽器會在當前窗口直接打開,影響用戶體驗,嘗試各種方案和百...
閱讀 1341·2023-04-25 23:42
閱讀 2808·2021-11-19 09:40
閱讀 3520·2021-10-19 11:44
閱讀 3529·2021-10-14 09:42
閱讀 1860·2021-10-13 09:39
閱讀 3821·2021-09-22 15:43
閱讀 665·2019-08-30 15:54
閱讀 1448·2019-08-26 13:32