iOS Safari中移动应用无法打开新标签页的解决方案

打印 上一主题 下一主题

主题 734|帖子 734|积分 2202

前言

通过网页的配置文件实现的iPhone移动应用无法调用js代码打开新标签页
题目复现

  1. // #ifdef H5
  2.         window.open(url, '_blank');
  3. // #endif
复制代码
通过js的windos.open函数打开新标签页
但是却没有反应
其他的windows系统的浏览器大概安卓的网页都可以正常打开新标签页


  • 通过搜刮相干信息得知:
   在 iOS 的 Safari 浏览器中,window.open() 方法的举动与在桌面浏览器(如 Chrome、Firefox 或 Safari 桌面版)中有所不同,这主要是因为 iOS 的安全计谋和用户体验设计。
对于 window.open(url, '_blank') 这样的调用,在 iOS 的 Safari 浏览器中,默认情况下,如果页面是在用户交互(如点击事件)的上下文中调用的,它通常会尝试打开一个新的浏览器窗口或标签页来加载指定的 URL。然而,iOS 可能会制止这种弹出窗口的自动显示,特殊是如果它看起来像是未经用户明确请求的弹出广告。
在浏览器情况中,window.open()和<a target="_blank">的举动可能会受到用户浏览器设置的影响,如弹出窗口制止器等。
  总结:
1.iOS的Safari浏览器可能会拦截不安全的跳转大概弹窗
2.可能是用户配置的安全计谋大概广告拦截的题目
解决方案


  • window.location.href 会替换当前页面的URL,并在当前浏览器标签页中加载新的URL
  • 利用请求头的UserAgent信息判断该用户是否在iPhone的safari浏览器中发起请求并判断。
  • 如果是在特定浏览器发起请求则可以在当前页跳转url
代码

  1. // #ifdef H5
  2. if (this.isIPhone === true){
  3.         window.location.href = url;
  4. } else{
  5.         window.open(url, '_blank');
  6. }
复制代码
判断函数
  1. detectDevice() {  
  2.       const userAgent = navigator.userAgent.toLowerCase(); // 转换为小写以忽略大小写差异  
  3.       if (userAgent.includes('iphone')) {  
  4.         this.isIPhone = true;  
  5.       }  
  6.     },
复制代码
我们起首通过navigator.userAgent获取当前浏览器的UserAgent字符串,并将其转换为小写(toLowerCase()),以便在检测时忽略巨细写差异。然后,我们利用includes('iphone')来检查UserAgent字符串中是否包含"iphone"这个词。如果包含,我们就将isIPhone数据属性设置为true

以上内容未查其他资料,以下内容则是我发布该文章后看到csdn为我推荐的相干的文章得知:
   safari 中没办法在回调函数里面实验window.open, 原因是safari的安全机制将其拦截了

该回复来自CSDN-关于safari不兼容window.open方法的客户端设置解决方案
    在调移动支付题目的时间碰到过,用window.open打开一个微信支付链接,唤醒移动支付,在IOS下死活唤醒不了,是js代码辩论题目…是click事件IOS下不兼容题目…末了定位到window.open语句,之后改为window.loaction.href,古迹般的可以唤醒支付,因此,也就很直观的证实白在Safari下用window.open是有题目的.

    原文链接:https://blog.csdn.net/u010633266/article/details/84862851
  这些回复证实了我的料想与解决方案的可行性,
各人也可以看看这两篇相干文章扩展更多


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张国伟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表