原创

解决IOS下window.open页面打不开问题

温馨提示:
本文最后更新于 2022年01月26日,已超过 160 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

最近想着把友链和广告加一个点击次数的统计,最终根据点击次数的多少来排序友链的展示(ps:切勿恶意点击友链,否则将停止该友链的展示)

问题展现:

IOS浏览器点击时没反应

后来百度查找原因:原来大部分现代的浏览器(Chome/Firefox/IE 10+/Safari)都默认开启了组织弹出窗口的策略,原因是window.open被广告商所滥用,严重影响用户的使用。

这个组织弹出窗口的操作,并不是直接封杀window.open(),而是根据用户的行为来判定这次操作是不是属于流氓操作。如果是用户自己的动作触发的window.open就不会被阻止,比如写在onclick事件中,但如果是代码自动触发就会被组织的。

Safari中无法open新窗口,原因是Safari的安全机制将其阻止,一些异步操作,比如ajax回调里面执行window.open就会失效,原因是代码自己自动执行的,被IOS的安全机制拦截!

解决方法:

使用window.location.href = linkUrl;【或者使用window.location.replace()来替代当前的url】;

网上的在回调之前开个空窗口,然后再修改其location指向,该方法试过无用,只是开了个新窗口;

正文到此结束
本文目录
    Loading...