侧边栏壁纸
  • 累计撰写 14 篇文章
  • 累计创建 15 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

Safari无法打开新页面

xrdev
2022-09-14 / 1 评论 / 1 点赞 / 499 阅读 / 242 字 / 正在检测是否收录...

Safari window.open无法打开窗口

原因:会拦截异步函数中的window.open

axios.get("/api").then(res=> {
	window.open(res.url); // 异步函数中会拦截
})

解决办法

  • mac 上Safari 有效, ios手机上无效
const windowOpen = (function () {
  const a = document.createElement("a")
  a.target = '_blank'
  document.body.appendChild(a)
  // 返回一个闭包函数,为了优化每次调用不会多次创建a标签
  return function (url) {
    a.href = url
    a.click()
  }
})()

// 调用
windowOpen("https://blog.xrdev.top")

  • 提前打开window.open

const newWindow = window.open("", "_blank")
axios.get("/api").then(res=> {
        newWindow.location.href = res.url
    	// 这种方法如果需要关闭页面的话,会导致闪屏
    	newWindow.close() // 因为页面打开了,回调执行到这里( 有了一段时间)这时关闭,就会出现闪了一下的效果
})
  • 在页面或者数据初始化的时候就把真实的url 获取到,然后直接用window.open 打开
1

评论区