問題: 如題
需求: a標籤 點擊後 3秒後出現一個新的window視窗
思路: 爬了很多文章,目前寫法是 點擊後先彈出一個視窗 三秒後再給URL
目前這個方法測試是EDGE、SAFARI、CHROME都成功,但是最理想情況是,三秒後才彈出視窗
以下是我的CODE,有試過把第 15行放進 32行內,但這樣SAFARI會擋
附上codepen 給各位大神們:
https://codepen.io/ialuyikr-the-lessful/pen/QWmOwbL
想不到該怎麼解了,想請教大神們幫忙指點下,十分感謝
這因該不止是 Safari。其它瀏覽器早晚也會跟進的。
現在來說,基於安全性原則。在非本域的情況下使用 window.open
大多數來說都會被擋下的。
除非用戶也就是本機的會員。有將瀏覽權限及安全系數給允許任意網站都可以打開。
才能正常使用。
也就是說,就算你目前使用 EDGE、SAFARI、CHROME 看起來是可以打開的情況下。
但並不代表其它人也會有跟你一樣可以打開的。
因為其能不能打開,還是來自本機上的瀏覽器設定。
為何會有這樣的限制,其來源可查看「視窗炸彈事件」
目前來說,其實還是有許多偷吃步的招式來騙瀏覽器。
如使用表來開新視窗、先開空白頁再指定URL、內框架、還有你目前的事件導引處理。
但其實我要跟你說,這些動作其目的也只是為了騙過瀏覽器,不認為你是開新視窗。
但認真來說,早晚會跟 Safari 一樣的。
另外。如果你不指定option的情況下。其實是可以使用的。只是會變成另開分頁而已。
大多數的瀏覽器只對彈窗比較嚴格。
畢竟彈窗寫的好的話,可以讓用戶不感覺到有彈窗但能運行另外的東西。
了解,受益良多,但請教大大您的這句
"如果你不指定option的情況下。其實是可以使用的。只是會變成另開分頁而已"
請問這句話是指的是類似a tag的href嗎? 還是另外有關鍵字可以看呢
是的,其實跟使用 href target blank 是一樣的。
這是依照目前而言。
其實早期的EDEG(IE核心時期)
使用 window.open 是會真的另開一個瀏覽器出來。
現在的都是另開分頁了。
不過手機瀏覽器我沒全部試過。
或許你可以玩一下看看。
總之,因為現在限制太多,我已經不在使用 window.open 了。
因為早期我為了要挑戰這個。已經改過至少8次以上的版本。
大多是一開始還能用。一段時期後又被瀏覽器改規則了。又不能用了。
然後就一直再繼續找可以用的方式。找的很累。
謝謝大大分享,長了很多新知識
之後可能也會漸漸減少用window.open的方式去做相關需求