【问题标题】:How can I know when a window popup is loaded?我如何知道何时加载了弹出窗口?
【发布时间】:2013-09-20 12:25:47
【问题描述】:

试过this我的代码:

var w = window.open("http://www.jsfiddle.net");

if (w) {
    w.onload = function() {
        $('#complete').html("finished");
    };
}

但我离目标很远。我想在加载窗口时在 div 中写“完成”。我该怎么做?

【问题讨论】:

  • 在其他域是不可能的。
  • 好的。假设我在同一个域中! (问题已编辑)
  • 除非它是同一个域我不认为你可以得到一个完成的回调,因为我认为这将属于跨域沙箱,如果它在同一个域上,你可以拥有正在加载的页面通过在 onload 事件中使用 window.parent.someGlobalFunctionInParent(); 来执行打开它的窗口的功能
  • 你没有搜索论坛吗?问了很多次。
  • 如果你在同一个域中,你可以调用window.parent.frameHasLoaded();,你需要创建一个函数frameHasLoaded,从那里打开弹出窗口

标签: javascript jquery


【解决方案1】:

如果您想从父级进行控制,您可以使用 ajax 抓取 html 并将其注入弹出窗口。

$.ajax({
   url:"somepage.html",
   success:function(html) {
     $('#complete').html("finished");
     var popup = window.open("");
     var doc = popup.document;
     doc.write(html);
   }
});

虽然如果子页面有依赖于 onload 的脚本,它们可能不会触发,

【讨论】:

  • 嗯,不,我不能这样做,因为页面本身有一些重定向,可能需要用户输入数据。
  • 我能知道用户何时关闭该弹出窗口吗?
  • 不确定是否有关闭回调,您可能需要在弹出窗口中再次调用函数,但您可以从父级查看popup.window popup.top 或其他null,因为他们关闭时将变为null
  • 至于用户输入数据,能不能只在ajax调用的data选项中发送用户输入?
  • 长篇大论为什么我不能;) 嗯,w.top 把地址还给我?确定有这个功能吗?
猜你喜欢
  • 1970-01-01
  • 2019-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 2019-01-23
  • 1970-01-01
相关资源
最近更新 更多