window.open方法被浏览器拦截的处理方式

Posted yangguojin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了window.open方法被浏览器拦截的处理方式相关的知识,希望对你有一定的参考价值。

  • 问题现象

    当我们在一个 ajax 回调中执行 window.open 方法时,新页面会被浏览器拦截。

  • 原因

    在 Chrome 的安全机制里,非用户直接触发的 window.open 方法,是会被拦截的。

  • 处理
    $(‘#jump-btn‘).on(‘click‘, function () {
      // 打开一个空标签页(此处不会被拦截)
      var newTarget = window.open();
      $.ajax({
        data: data,
        success: function (url) {
          // 修改新窗口的 url
          newTarget.location.href = url;
        }
      })
     });

    总之,在用户交互时首先打开一个空标签页,随后在回调函数中更改 href 即可。

以上是关于window.open方法被浏览器拦截的处理方式的主要内容,如果未能解决你的问题,请参考以下文章

window.open打开新窗口被浏览器拦截的处理方法

js实现window.open不被拦截的解决方法汇总

js实现window.open不被拦截的解决方法汇总

ajax回调中window.open弹窗被Chrome81拦截的解决方法

window.open()打开新窗口被拦截

window.open(url)新窗口打开链接被浏览器拦截解决方案