有没有办法打开新窗口,
var newWindow = window.open(...);
然后将事件从newWindow传递到其开启窗口?
我想要做的是打开一个窗口,询问一些信息,然后一旦输入,关闭新窗口并在原始窗口中触发一个动作。
感谢。
编辑:谢谢大家。这几乎是我认为它的工作原理,但我必须做一些愚蠢的事情。这里有一些测试代码,我一直在撞墙:
在parent.html中
window.open("child.html");
$(window).bind("something", function(e) {
console.log('something happened');
});
和child.html
$("#somebutton").click(function() {
$(window.opener).trigger("something");
window.close();
});
孩子打开正常,我点击按钮,孩子关闭,但父母身上永远不会发生“某事”!
我也喜欢以相反的方式工作。有什么方法可以做出像这样的工作吗?
var child = window.open("child.html");
$(child).bind("something", function() { ... });
感谢。
答案 0 :(得分:5)
是的,你可以这样做。在新窗口中,您可以使用window.opener
访问父窗口。这使您可以访问父窗口的所有属性和功能,以便您可以执行以下操作:window.opener.someFunctionOfMainWindow('some data from new window');
在您的情况下,您可以在新窗口中执行此类操作。
function dataIsEntered() {
window.opener.triggerAction(data);
window.close();
}
答案 1 :(得分:5)
我毫不犹豫地不必要地插入jQuery,但对于像这样的事情来说非常好:
$('#somebutton').click(function() { window.opener.$('body').trigger('someevent', somedata); });
只需在子窗口的初始化脚本中运行该行。注意:even必须明显绑定到父级中的body
元素。
请注意,您在此处受到单一来源政策的限制。除非浏览器明确允许,否则仅当两个窗口都从同一主机打开时才会起作用。
答案 2 :(得分:1)
确实有可能,你想看看window.addEventListener
。这在现代浏览器以及IE 9中都可用。
访问this page了解更多信息和示例。
答案 3 :(得分:0)
window.opener.blah = "meh"
将开启窗口中的js var(blah)设置为“meh”