【问题标题】:Javascript: How to reference a child window that is opened by postingJavascript:如何引用通过发布打开的子窗口
【发布时间】:2011-10-26 12:56:54
【问题描述】:

我想引用我打开的子窗口,以便我可以从父窗口调用一些方法。为此,我需要保留对窗口的引用。我找到的所有示例都通过以下方式保留参考:

var windowRef = window.open(...);

但我不使用 window.open。我提交表单是因为我需要向其发布数据:

var frmMain = document.forms['frmMain'];
frmMain.action = "http://www.somedomain.com";
link.attr("href");
frmMain.target = "_blank";
frmMain.submit();

如何使用帖子引用打开的窗口?谢谢!

【问题讨论】:

  • 你一定是以某种方式打开了窗口。单独提交表格是不行的。您还使用什么其他代码?
  • 不,上面发布的代码确实打开了窗口。 “提交”方法就是这样做的。

标签: javascript browser window


【解决方案1】:

只要你的target属性设置为实名,window对象的open方法实际上可以为你创建引用。

var frmMain = document.forms['frmMain'];
frmMain.action = "http://www.somedomain.com";
link.attr("href");
frmMain.target = "myawsmwindow";
frmMain.submit();

var myawsmwindow = window.open("", "myawsmwindow"); // gets you a variable ref to the named window.

编辑:这是一个演示jsfiddle

【讨论】:

  • 这会打开两个窗口。 “提交”将打开一个窗口,而 window.open 将打开第二个窗口。对窗口使用相同的名称并不重要。提交和打开是两个独立的命令。是的,我试过这个。您的示例将打开一个空白窗口。
  • @kojiro:你确定所有现有的浏览器都表现出这种行为吗?我记得 IE 的行为在这里有所不同,但我目前无法测试。但是,如果 submit()window.open() 行交换位置,我希望它更加一致。
  • @AndyE 上面的 jsfiddle 在 IE6 和 9 中进行了测试。撇开浏览器错误不谈,就获取引用而言,代码出现的顺序无关紧要。 window.open 可能会在表单提交发生之前打开窗口,但只要表单提交发生并针对同一个窗口,就没有关系。您可能不想在提交事件处理程序中打开一个新窗口然后返回 false,但我的 PoC 仍然存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多