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

丽水市住房和城建建设局网站开发一个app软件的开发费用

丽水市住房和城建建设局网站,开发一个app软件的开发费用,成都本地网站建设,郑州做网站优化公摘要 在ios环境,在某些情况下执行window.open不生效 一、window.open window.open(url, target, windowFeatures) 1. url:「可选参数」,表示你要加载的资源URL或路径,如果不传,则打开一个url地址为about:blank的空…

摘要

在ios环境,在某些情况下执行window.open不生效

一、window.open

window.open(url, target, windowFeatures)

1. url:「可选参数」,表示你要加载的资源URL或路径,如果不传,则打开一个url地址为about:blank的空白页。

2. target:「可选参数」,它可以给以下两种值

第一种是target关键字
_self:当前标签页加载;
_blank(默认值):新标签页打开;
_parent:作为当前浏览环境的父级浏览上下文打开,没有父级浏览上下文,效果与_self相同;
_top:作为最顶级的浏览上下文打开,没有顶级浏览上下文,效果与_self相同。
第二种是一个字符串:
表示加载资源的浏览上下文的名称,也就是标签页的名称,如果这个名称在现有的标签页中不存在,则会开启一个新的标签页,如果存在,会跳转到这个标签页。

3. windowFeatures:「可选参数」,它是一个字符串,用来描述窗口的特性,其格式是"key1=value1, key2=value2",即将key和value以=号连接拼接成字符串,多个key value以逗号隔开,比如我们要打开一个宽为500,高为600的窗口可以这么写:

window.open(url, 'new-window', 'width=500,height=600');

二、Bug

复现问题的demo:

async function jump() {await fetch('/xxx');window.open('https://www.xxx.cn');
}

正常情况下执行window.open是能正常新标签页打开传入的url的,但是一旦前面用await做了异步操作后,再执行window.open,就不生效了。

三、原因分析

  • 安全机制拦截:IOS的Safari浏览器为了防止恶意网站通过window.open/a标签打开其他网站,于是对它们的调用有所限制,如果不是由用户直接交互触发的,而是由程序自动触发的,Safari会拦截这个操作。
  • 异步操作:在AJAX回调中执行window.open/a标签跳转,被浏览器认为是非用户交互行为,所以被拦截。

四、解决方案

方案1:改用location.href
async function jump() {await fetch('/xxx');location.href = 'https://www.xxx.cn';
}

safari不会拦截location.href

并不是所有场景下都适合用location.href,因为location.href会刷新页面,所以需要根据具体场景来选择。

方案2:先打开一个空标签页
async function jump() {const newWin = window.open("", "_blank"); // 提前打开一个窗口const { jumpUrl } = await fetch('/xxx');if (jumpUrl) {newWin.location = jumpUrl;} else {newWin.close();// ... }
}

这里根据有没有jumpUrl进行跳转,如果没有jumpUrl,我需要调用close方法关闭刚才提前打开的那个窗口,而这样用户就会体验到的流程就是,先出来一个新窗口,随后被秒关闭,这样用户体验很差。

方案3:setTimeout/requestAnimationFrame
async function jump() {await fetch('/xxx');setTimeout(() => {window.open('https://www.xxx.cn');}, 0)
}
async function jump() {await fetch('/xxx');requestAnimationFrame(() => {window.open('https://www.xxx.cn');})
}

五、总结

如果setTimeout不生效,可以尝试加点延时看看,比如100毫秒,我这边实测的ios机型都能生效,所以就没加延时。

http://www.yayakq.cn/news/903395/

相关文章:

  • 如何在网站后台添加商品网络产品服务的提供者不得设置
  • 做特殊任务的网站举三个成功的新媒体营销案例
  • 如何面试网站开发可以做外链视频的网站
  • 廊坊网站建设佛山厂商网站收录很慢
  • 建设邮箱网站东莞网站推广建设
  • 北京设计网站工商企业查询网
  • 网站开发专员网站集群建设必要性
  • 视频投票网站怎么做的购物网站建设策划报告
  • 网站 代备案如皋网站设计
  • 淘宝购物网站的建设网页小游戏怎么下载
  • 做外贸到那个网站国内新闻最新消息10条简短2022
  • 设计学网站怎么查询域名是否备案
  • html5韩国网站模板装修案例介绍文案
  • 淮安住房与城乡建设部网站沐风 wordpress 主题
  • 做卷皮网类似网站宁波人流多少钱
  • 建站公司外包贵州做网站怎么推广
  • 互动型网站提高网站订单转化率
  • 校园微网站建设方案ppt模板下载工程建设云小程序
  • 懒人凳子网站建设策划书庆阳市建设局网站
  • 有哪些专做自然风景图片的网站微信小程序什么时候上线的
  • 网站建设接单源码flash做ppt的模板下载网站有哪些
  • 做网站需要学什么wordpress 蜘蛛
  • 特效网站模板凡科网站怎么关闭建设中
  • 做网站市场价外网下载
  • 专注于响应式网站开发中企动力是国企还是央企
  • 济宁专业建网站音乐网站如何建设
  • 南通网站备案WordPress询盘
  • 策划公司网站建设专题类网站
  • 烟台酒店网站建设广西网站建设价格多少
  • 网站制作网免费网站建设分期收费