【问题标题】:Jquery how to trigger after load when changing popups href更改弹出窗口href时Jquery如何在加载后触发
【发布时间】:2015-10-19 07:51:48
【问题描述】:

在我的页面上,我使用以下命令打开一个弹出窗口:

sideWindow = window.open(address,'pop',"height=200,width=200,scrollbars=1");
$(sideWindow).load(loadComplete);

并在正确加载后触发函数loadComplete。

打开窗口后,用户可以更改它的地址,然后我使用以下命令重定向弹出窗口:

sideWindow.location.href=newAddress;

但是,它不会在根据需要完成加载后触发 loadComplete。执行重定向的最佳方法是什么,以便在新页面完成加载后触发 loadComplete?

注意事项:
我无权访问我正在加载的页面的来源。
loadComplete 不应该在图像加载之后运行,因此$(sideWindow.document).ready 会提前触发。

【问题讨论】:

  • 您是否尝试过发出 ajax 请求来打开窗口?
  • 那会是什么样子?它对重定向新窗口有何帮助?

标签: javascript jquery html


【解决方案1】:

我想我会把它变成一个答案。以下是您在新窗口中打开的方式: 如您所见,它会等待成功响应以打开新窗口。我没有使用它,因为我不喜欢弹出窗口(我更喜欢将它保存在 DOM 中)。话虽如此,这应该可以解决问题。

// AJAX window.open()
$('#btnAJAX').on("click", function(){
    $.ajax({
      url: "/user/login/",
      context: document.body,
      async:false,   //NOTE THIS very important turns call to blocking
      success: function(){  
         success = true
      }
    });
    if(success){ 
      window.open('http://google.com') //opens new page on success
    }
})

stackoverflow 中有很多关于该主题的帖子,例如: window.open() works different on AJAX success

【讨论】:

  • 在重定向弹出窗口后调用 loadComplete 没有帮助
  • 不幸的是,没有简单的方法,因为域外的 URI 不允许 onload/ready。如有必要,您可以使用 js 文件创建 HTML 页面。在 js 文件中有一个立即函数,它调用所需的 url。您将结果包装在正文中。该函数将使用 AJAX 调用(这显然会违反同源策略)来打开窗口。或者您可以使用 IFRAME 打开窗口(这将在您创建的 html 页面内。然后您可以使用 onload 调用您的页面。但是这个/您的建议被认为是不好的做法。
  • 我正在使用 php 进行重定向,这就是为什么在首次打开弹出窗口时 onload 正在工作的原因。
猜你喜欢
  • 1970-01-01
  • 2021-07-20
  • 2022-10-01
  • 2014-08-08
  • 2017-03-03
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
相关资源
最近更新 更多