我正在启动一个带有window.open(...)的弹出窗口,然后将elementId传递给新的弹出窗口。
然后在启动弹出窗口期间,我在开启窗口中找到与传递给弹出窗口的elementId匹配的元素。然后弹出窗口使用jQuery.bind(...)订阅该元素上的事件。然后从开启窗口内部我使用jQuery.trigger(...)触发这些事件,我也尝试了triggerHandlers。
问题是我的弹出窗口的eventHandler永远不会被调用。我可以在开启窗口内部订阅事件没问题。但是,当我从弹出窗口尝试时,它不起作用。
有没有人对如何解决这个问题有任何想法?这是某种安全描述吗?
非常感谢您的阅读!
答案 0 :(得分:10)
答案 1 :(得分:3)
感谢Pointy的回答。我尝试了这个,并希望分享我的发现。您可以在弹出窗口中实际定义事件侦听器,而无需引用开启器:
页面中的以弹出方式打开:
$(document).on("foo", function() {
alert("foo");
});
打开弹出窗口的页面中的:
var popup = window.open("popup.html", "_blank", "width=500");
$("#trigger-button").on("click", function() {
popup.$(popup.document).trigger("foo");
});
秘诀是:即使从弹出窗口对象调用jQuery,也不能直接使用选择器,因为jQuery会尝试在父窗口(opener)窗口中查找元素。