ios 系统使用 window.open() 打开新的页面失效


2022-12-07 iosbug

持续更新...

# 项目场景

兼容 在 ios 系统下的使用 window.open() 打开浏览器。

# 问题描述

点击 window.open()失效,点击无效果

btnAjax.addEventListener("click", function () {
  var onlocal = window.open("", " _blank");
  $.getJSON("https://cnodejs.org/api/v1/topics", function (data) {
    window.open(data.data.url);
  });
});
1
2
3
4
5
6

# 原因分析

ios 浏览器的安全策略问题

由于 window.open() 被广告商滥用,严重影响用户的使用。

Safari 出于安全机制将 window.open() 的新建页面行为阻挡,阻止了弹出窗口的操作,因此在 Safari 中无法 open 新窗口。

# 解决方案

先使用 window.open() 打开个空白页,再通过ajax获取地址,使用其句柄更新其地址

btnAjax.addEventListener("click", function () {
  var onlocal = window.open("", " _blank");
  $.getJSON("https://cnodejs.org/api/v1/topics", function (data) {
    onlocal.location = "https://www.baidu.com";
  });
});
1
2
3
4
5
6

Loading comments...