【发布时间】:2018-01-25 08:26:00
【问题描述】:
我使用var openedWindow = window.open(...) 创建了一个窗口。
我有一个函数应该监听 click 新窗口中按钮的事件,但它永远不会触发。
每当我点击btSearch按钮时,它应该打开另一个窗口并监听#submitButton点击事件。
btSearch.Attributes["onclick"] = $@"
var openedWindow = window.open(myUrl, "", "toolbar=no,menubar=no,personalbar=no,width=650,height=399,scrollbars=yes,resizable=yes");
window.onModalExit(openedWindow);";
函数是aspx文件
function onModalExit(modalWindow) {
$('#submitButton', modalWindow.document).ready(function () {
modalWindow.document.getElementById('submitButton').addEventListener('click', function () {
console.log('RETURNED CORRECTLY');
alert('Now');
});
});
}
【问题讨论】:
-
我不认为你可以附加到另一个窗口的事件,出于明显的安全原因,每个窗口都在一个专用的沙箱中。您必须在这两者之间设置一个通信系统,例如 websocket 或其他东西。
-
@sjahan 但是我有一个对该窗口的引用,我可以访问它的 DOM 并且
$('#submitButton', modalWindow.document).ready可以正常工作。只有click不起作用。 -
ready是有道理的,因为您订购了新页面的加载,但在那之后,该窗口中发生的事情将保留在该窗口中。否则,就会有太多的弱点,因为你可以像这样跨站点入侵每个网站。 -
也许您可以将
postMessage与 iFrame 一起使用?我从未尝试过,但也许它可以在你的情况下完成这项工作! -
即使您拥有该窗口,但您不拥有该文档,除非它与打开器的域相同。
标签: javascript c# jquery webforms