翼度科技»论坛 编程开发 JavaScript 查看内容

移动端window.open跳转链接时,iOS没有反应的问题

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
问题描述: 使用window.open跳转链接时安卓可以正常跳转,但是iOS苹果上没有反应
问题原因:

  • 用户交互限制
    iOS 对于 window.open 的调用有严格的用户交互要求。如果 window.open 不是在用户交互(如点击事件)的上下文中调用的,可能会被浏览器阻止。
  • 弹出窗口拦截
    某些浏览器可能会默认拦截弹出窗口,尤其是当用户没有明确的交互动作时。
  • JavaScript 执行顺序
    如果 window.open 被放在异步操作之后,可能会导致问题。
    【解决方案】在用户交互事件的回调中立即执行
  • iOS Safari 特性
    iOS Safari 对于 window.open 的行为有一些特定的限制。例如,window.open 可能不会在某些情况下打开新标签页,而是会在同一个标签页中导航。(与1类似)
  • URL 格式问题
    确保 URL 格式正确,没有语法错误。
此处我遇到的问题为第一种,如有类似问题,可尝试采用相同方案进行解决
  1. function skipLink(url){
  2.     // 获取用户代理信息(不考虑代理信息被伪装的情况)
  3.     var userAgent = (navigator.userAgent || navigator.vendor || window.opera) || 'Unknown';
  4.     // 检查是否是iPhone或iPad
  5.     if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
  6.         // 如果是移动设备,则重定向页面
  7.         window.location.href = url;
  8.     } else {
  9.         // 否则,在新窗口打开链接
  10.         window.open(url);
  11.     }
  12. }
复制代码
来源:https://www.cnblogs.com/Chowhound/p/18451798
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具