首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >window.open的交替方法

问window.open的交替方法
EN

Stack Overflow用户
提问于 2015-09-17 16:16:05
回答 3查看 11.8K关注 0票数 0
  • 我有一个js函数,当我将异步作为false时,它会以新窗口的形式打开,
  • 但是当我把异步当作真,它就会弹出
  • 我需要使代码成为true,但它应该作为新窗口打开,而不是弹出。
  • 你们能告诉我如何发出异步请求,这样新窗口就不会以弹出窗口的形式加载。
  • 对于window.open有什么替代方法吗?
  • 提供下面的代码 //调试器;Ext.Ajax.request({异步: false,url: sports.util.Utils.getContextPath() + '/tabClicks.do‘),
EN

回答 3

Stack Overflow用户

发布于 2015-09-17 17:21:34

您的代码有点奇怪,因此很难正确地进行调整,但这是它的要点:

代码语言:javascript
复制
showNewWindow: function(menu) {
    var me = this,
        newWindowId = sports.util.Utils.randomString(12);

    //
    // Make a synchronous request so that the new window will
    // not load as a popup.
    //
    debugger;
    var popup = sports.util.Utils.openNewWindow('', 'menu', {}, null, null, newWindowId);
    Ext.Ajax.request({
        async: false,
        url: sports.util.Utils.getContextPath() + '/tabClicks.do',
        params: {
            oldWindowId: sports.util.Utils.getWindowName(),
            newWindowId: newWindowId
        },
        success: function() {
            popup.location.href = "/desktop/main";
        },
        scope: me
    });
},
票数 1
EN

Stack Overflow用户

发布于 2015-09-17 16:56:23

弹出阻止程序试图判断何时打开窗口是为了直接响应用户操作,还是由应用程序自发地打开。他们这样做的方式可能是检查名为window.open()的函数是否是针对用户触发的事件运行的,比如鼠标单击。

执行同步AJAX请求时,当响应到达并成功函数调用window.open时,鼠标单击触发的函数仍在运行。因此,它被认为是用户请求的窗口,而不是弹出窗口。

使用异步AJAX时,当成功函数运行时,单击处理程序将不再运行。浏览器认为对window.open的异步调用是自发的,因此它会阻止它。

我不认为有任何解决办法,因为你能做的任何事情也可以被其他人用来绕过弹出阻断器,它们将是无用的。

票数 0
EN

Stack Overflow用户

发布于 2017-02-03 07:55:30

代码语言:javascript
复制
function openNewWin(name) {
      $.ajax({
          async: false,
          type: 'POST',
          url: 'your url',
          success: function () {
               window.open(name);
          },
          async: false
      });
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32635231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档