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

问题如标题所写,在ajax回调里面拿到即将要跳转的链接url,使用window.open(linkUrl),没有起作用,而且代码也没有报错,查找原因是:大部分现代的浏览器(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指向,该方法试过无用,只是开了个新窗口;

 

【完】

以己度人,不如以人渡己。

 

posted @ 2019-01-18 14:56  tangjiao_Miya  阅读(13016)  评论(0编辑  收藏  举报