资讯专栏INFORMATION COLUMN

window.open在Safari浏览器出现的问题

leanote / 1576人阅读

摘要:在回调函数最常见的就是发送请求成功或者失败回调函数中使用时,在浏览器会无效,原因是的安全机制将其阻挡了。上有政策,下有对策,解决办法为假设使用了我在中封装的动态配置演示发送请求,其它使用回调函数的使用方法同理。

回调函数(最常见的就是发送ajax请求成功或者失败回调函数)中使用window.open时,在Safari浏览器会无效,原因是Safari的安全机制将其阻挡了。

上有政策,下有对策,解决办法为:

假设使用了我在Vue中封装的 动态Axios配置 演示发送post请求,其它使用回调函数的使用方法同理。
// 这个是模仿在Vue中,且使用了ES6,不使用则把let换为var便可
methods: {
   sendData() {
    let winOpen = window.open("", "_blank"); //首先打开一个新页面
    post("xx/xx/", data).then( res => {
        let link = res.link;
        setTimeout(function() {  //这里使用setTimeout非常重要,没有将无法实现
            //原因是window.open会中断正在执行的进程,这样能保证其它代码执行完成再执行这个。
          winOpen.location = link; //改变页面的location
        }, 100);
      }, err => {
        console.log(err.msg);
      })
  }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110095.html

相关文章

  • JavaScript BOM——“window 对象”注意要点

    摘要:仅限数值表示新窗口的高度。一个字符串参数,并将其显示给用户,提供两个按钮,一个按钮返回布尔值另一个按钮返回布尔值。 全局作用域 window 在是BOM 的核心对象,他是浏览器的一个实例。 在全局作用域中声明的变量、函数都会变成window 对象的属性和方法。如: var age = 18; function sayAge(){ console.log(window.age);...

    levius 评论0 收藏0
  • window.open览器拦截解决方案

    摘要:原因分析深入研究当浏览器检测到非用户操作产生的新弹出窗口,则会对其进行阻止。但是,被浏览器拦截我们代码中要弹出的窗口并不是程序员所希望的。 现象 最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,搞得人无比郁闷啊,虽然在自己的环境可以对页面进行放行,但是对用户来说,不能要求用户都来通过拦截。何况当出现拦截时,很多小白根本不知道发生了啥,不知道在哪里看被拦截的页面,简...

    rickchen 评论0 收藏0
  • Web前端开发过程踩过坑以及一些小方法技巧(持续更新)

    摘要:一上浏览器使用不允许事件代理到上选择器以上绑定可能会出现点击失效的情况。对于,如果工具是以下版本,在中加入以下代码以上的版本加入以下代码八开发对于文件的处理问题。解决方法有给元素设置绝对定位即可。元素换成内联元素,如。 一、iOS上浏览器使用jQuery不允许事件代理到document上 $(document).on(click, 选择器, function(){}); 以上绑定可能...

    张春雷 评论0 收藏0
  • Web前端开发过程踩过坑以及一些小方法技巧(持续更新)

    摘要:一上浏览器使用不允许事件代理到上选择器以上绑定可能会出现点击失效的情况。对于,如果工具是以下版本,在中加入以下代码以上的版本加入以下代码八开发对于文件的处理问题。解决方法有给元素设置绝对定位即可。元素换成内联元素,如。 一、iOS上浏览器使用jQuery不允许事件代理到document上 $(document).on(click, 选择器, function(){}); 以上绑定可能...

    arashicage 评论0 收藏0
  • Web前端开发过程踩过坑以及一些小方法技巧(持续更新)

    摘要:一上浏览器使用不允许事件代理到上选择器以上绑定可能会出现点击失效的情况。对于,如果工具是以下版本,在中加入以下代码以上的版本加入以下代码八开发对于文件的处理问题。解决方法有给元素设置绝对定位即可。元素换成内联元素,如。 一、iOS上浏览器使用jQuery不允许事件代理到document上 $(document).on(click, 选择器, function(){}); 以上绑定可能...

    binta 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<