当前位置: 首页 > news >正文

移动端测试——如何解决iOS端无法打开弹窗式网页(Webkit)

目录

一、什么是webkit?

1. 核心定义

2. iOS 的特殊限制

3. 弹窗拦截的逻辑

二、为什么 iOS 必须用 WebKit?

1. 苹果的官方理由

2. 实际后果

3.然而……

三、如何解决iOS端无法打开弹窗式网页?

1.用户

1.1 safari浏览器

1.2 夸克浏览器

2.开发者


#最近加入了实习,开始了针对实际业务的测试。在移动端测试时,我发现一个比较有趣的现象(被测网站采用弹出式窗口):

  • Android端:浏览器提供弹窗权限提示,用户可手动允许。连续允许3次后,浏览器默认放行该网站弹窗。

  • iOS端:仅显示不可操作的错误提示(“窗口打开失败,请在浏览器的弹出式窗口和重定向设置中允许本网站操作)和空白页面,无手动允许选项,如下图所示。

这是因为 苹果在 iOS 上的浏览器“技术霸权”——webkit!

一、什么是webkit?

1. 核心定义

WebKit 是一个开源的 浏览器渲染引擎(Rendering Engine),它的核心工作是:

  • 解析:读取网页的 HTML/CSS/JavaScript 代码。

  • 排版:计算每个像素该显示什么(布局、字体、颜色)。

  • 渲染:把代码变成你看到的可视化页面。

换句话说:

WebKit 内核 就像是浏览器的“发动机”,负责把网页代码(HTML/CSS/JavaScript)转换成你看到的页面。

  • 例子:就像汽车的引擎决定车速和油耗一样,WebKit 决定了浏览器如何加载网页、显示内容、处理弹窗等。

2. iOS 的特殊限制

  • WebKit 最初由苹果从 KHTML(Linux 引擎)分支而来,现由苹果主导开发。

  • iOS 的 App Store 审核规则 2.5.6 明确要求:所有浏览器必须使用 WebKit,禁止其他引擎,因此,夸克、Chrome 等浏览器在 iOS 上 本质是 Safari 的换皮版,功能受 WebKit 限制(如弹窗拦截策略与 Safari 一致)。

3. 弹窗拦截的逻辑

WebKit 会检查弹窗是否满足:

  • 用户主动触发(如点击按钮)。

  • 非用户触发(如页面加载完自动弹广告)。

如果是后者,引擎会直接拦截,并提示 "弹出窗口被阻止"

二、为什么 iOS 必须用 WebKit?

1. 苹果的官方理由
  • 安全:统一内核便于控制恶意网页。

  • 性能:优化 iOS 设备电池续航。

  • 生态控制:防止 Chrome/Firefox 通过自有引擎绕过苹果规则。

2. 实际后果
  • 功能阉割:iOS 版 Chrome 无法使用 Google 的 Blink/V8 引擎,性能比安卓版差。

  • 开发者适配成本:必须针对 WebKit 单独调试 CSS/JS。

3.然而……
  • 2021 年欧盟《数字市场法案》认定此规则涉嫌垄断,苹果被迫在欧盟允许其他引擎(iOS 17.4+)

三、如何解决iOS端无法打开弹窗式网页?

1.用户

1.1 safari浏览器
  • 以iOS17.5为例:在系统设置中下滑-->找到safari-->下滑,在通用中找到“阻止弹出式窗口”-->按钮置灰

1.2 夸克浏览器
  • 7.13.0版本未提供“阻止弹出式窗口”设置项

  • 长按该链接-->在新窗口打开

2.开发者

  • 用 <a target="_blank"> 替代 JS 弹窗

  • 或者给予用户文字提示--iOS用户:请长按链接在新页面打开,或改用chrome/safari

~~~~~~~~~~个人成长记录&学习成果分享~~~~~~~~~~

相关文章:

  • 七、Python高级特性:迭代器、生成器与装饰器
  • 智能实验室革命:Deepoc大模型驱动全自动化科研新生态
  • 前端 E2E 测试实践:打造稳定 Web 应用的利器!
  • echarts柱状图要给柱子顶部加一个顶的写法方案
  • 在反向代理环境下精准获取客户端真实 IP 的最佳实践
  • 每日八股文补充2网络篇
  • GESP C++ 五级真题(2024年12月)题解
  • Shell 流程控制
  • 什么是Sanity Testing?和冒烟测试的区别?
  • Kotlin中协程挂起函数的本质
  • 数据结构学习——二叉树
  • PCIE中基于地址的路由
  • IPV6概述
  • 【Android知识点】面试版
  • 1. 配置OSPF智能定时器
  • Docker 入门教程(三):镜像操作命令
  • 【菜狗的记录】模糊聚类最大树、图神经网络、大模型量化——20250627
  • Ubuntu安装Docker部署Python Flask Web应用
  • 【RAG面试题】如何获取准确的语义表示
  • 自动登录脚本神器-Mac电脑实现自动登录堡垒机并自动输入账号密码跳转不同机器环境