美文网首页
针对safari阻塞异步开启新tab的解决方案

针对safari阻塞异步开启新tab的解决方案

作者: 张培_ | 来源:发表于2017-12-11 21:57 被阅读204次

问题

  • 问题有两个
    • 在用户触发的浏览器事件中,异步的使用window.open开启一个新的tab失败
    • 在用户触发的浏览器事件中,异步的使用js代码调用form表单的提交function失败

解决问题1

  • 由于safari不能接受异步的window.open,那么我们首先同步的window.open一个空白的tab,然后获取新tab的window对象的引用(window.open()的返回值就是新tab window对象的引用)
  • 处理异步事件
  • 处理完之后将想要跳转的url赋值给新tab的window.location.href给出想要跳转的新数值即可
 const newTab = window.open('')
    setTimeout(() => {
      newTab.location.href = 'http://www.baidu.com'
    }, 3000)

补充知识

  • window.open的用法
    • 作用:打开一个新的窗体
    • 返回值:新窗体window对象的引用
    • 参数
      • 第一个:就是新窗体url
      • 第二个:用于设置弹出窗体的名称,如果使用已有的窗体或框架名称作为name参数,那么url网址将在这个窗体或框架页面载入
      • 第三个:就是一些窗口的属性了
      • -----> 第二个参数相对比较不常用但是很有用
    • 使用举例:
      <button onclick={()=>{window.open('','newTab')}}/>
      <a href='www.baidu.com' target='newTab' />
      //可以通过给tab创建一个窗口名,然后很多target的值都可以指向这个窗口名,就可以在指定的tab中打开页面
      

解决问题2

  • 早就知道大家都采用同步打开新tab,异步给tab赋url的方式解决safari的这个问题
  • 但是发现自己的情况是要做到表单提交而表单提交打开新的tab并不是又我自己来做的,因此我也不能够控制他同步打开然后异步赋值
  • 直到发现window.open有第二个参数
    • 因此依旧是同步的打开一个tabwindow.open('','newPay')但是一定要给第二个参数值
    • 然后将form标签的target属性值设置为window.open('','newPay')的第二个参数。就可以在同步打开的tab中load form submit的结果

相关文章

  • 针对safari阻塞异步开启新tab的解决方案

    问题 问题有两个在用户触发的浏览器事件中,异步的使用window.open开启一个新的tab失败在用户触发的浏览器...

  • UNIX 的5种IO模型介绍

    IO模型同步、异步、阻塞、非阻塞socket阻塞与非阻塞,同步与异步 同步和异步 同步/异步主要针对C端-同步就像...

  • JAVA中IO技术:BIO、NIO、AIO

    1、同步异步、阻塞非阻塞概念 同步和异步是针对应用程序和内核的交互而言的。 阻塞和非阻塞是针对于进程在访问数据的时...

  • I/O模型与多路复用

    同步、异步、阻塞、非阻塞 同步 & 异步 同步与异步是针对多个事件(线程/进程)来说的。 如果事件A需要等待事件B...

  • --java-IO模型

    一、概述 IO的方式通常分为同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO 同步和异步 是针对应用程序和...

  • BIO NIO AIO

    IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。 阻塞和非阻塞:是针对于进程在访...

  • I/O模型

    在学习I/O模型前,我们首先介绍同步和异步、阻塞和非阻塞的概念 1. 同步和异步 同步和异步是针对应用程序和内核的...

  • 谈论:同步异步阻塞非阻塞.md

    同步/异步:关注的方式(是否主动) 阻塞/非阻塞: 同步阻塞BIO: 同步非阻塞NIO: 异步非阻塞: 异步阻塞:

  • 五种I/O模型

    一:概念的理解:首先在网络编程的时候:常说的 同步/异步,阻塞/非阻塞四种调用方式:1、同步/异步主要针对C端(c...

  • 浅谈I/O模型

    一:概念的理解: 首先在网络编程的时候,我们常常见到同步/异步,阻塞/非阻塞四中调用方式: 1同步和异步主要针对C...

网友评论

      本文标题:针对safari阻塞异步开启新tab的解决方案

      本文链接:https://www.haomeiwen.com/subject/fibwixtx.html