Javascript 是否可以从父窗口绑定到子窗口上的事件?
是否可以将函数绑定到子窗口上的事件Javascript 是否可以从父窗口绑定到子窗口上的事件?,javascript,dom,asp.net-web-api,Javascript,Dom,Asp.net Web Api,是否可以将函数绑定到子窗口上的事件 document.getElementById('foo').onclick = function() { var newWindow= window.open('other.html', "_blank"); newWindow.document.addEventListener("onreadystatechange", function(){ console.log('foo'); // This is never run.
document.getElementById('foo').onclick = function() {
var newWindow= window.open('other.html', "_blank");
newWindow.document.addEventListener("onreadystatechange", function(){
console.log('foo'); // This is never run. Can I construct the new window so that it is run "onreadystatechange"?
});
return false;
};
注意,我想将一个事件绑定到
onreadystatechange
。我希望避免竞争条件,我可以创建一个窗口,绑定事件,然后加载URL以避免竞争条件吗?如果这样做,应该很好
var newwindow = window.open('other.html', "_blank");
var $ = newwindow.$; // add if needed
$(newwindow).bind('someEvent', function() { FunctionThatDoesSomethingInTheNewWindow });
return false;
如果你这样做了,那就很好了
var newwindow = window.open('other.html', "_blank");
var $ = newwindow.$; // add if needed
$(newwindow).bind('someEvent', function() { FunctionThatDoesSomethingInTheNewWindow });
return false;
.addEventListener(“onreadystatechange”,…)
事件属性以“on”开头。另一方面,事件名称则不是。也就是说,它应该是
.addEventListener(“readystatechange”,…)
我没有试图避免比赛条件,因为我知道没有办法这样做
好的,我不完全确定事件和辅助浏览上下文初始化如何与window.open()一起工作,那里的规范相当复杂。
我只想尝试设置DOM事件断点(chrome调试器有这些断点),看看哪些事件是按什么顺序触发的,然后检查在其他浏览器中是否有效
也就是说,我认为这里最简单的选择可能是读取document.readyState
属性。如果“完成”,则站点已完全加载,不会触发进一步的状态更改事件,您可以直接执行脚本,而不是等待事件。.addEventListener(“onreadystatechange”,…)
事件属性以“on”开头。另一方面,事件名称则不是。也就是说,它应该是
.addEventListener(“readystatechange”,…)
我没有试图避免比赛条件,因为我知道没有办法这样做
好的,我不完全确定事件和辅助浏览上下文初始化如何与window.open()一起工作,那里的规范相当复杂。
我只想尝试设置DOM事件断点(chrome调试器有这些断点),看看哪些事件是按什么顺序触发的,然后检查在其他浏览器中是否有效
也就是说,我认为这里最简单的选择可能是读取
document.readyState
属性。如果“完成”,则站点已完全加载,不会触发进一步的状态更改事件,您可以直接执行脚本,而不是等待事件。看起来您的答案是假设存在jquery,这在问题中没有提到,这与问题中的代码有何不同(除了使用JQuery)?看起来您的答案是假设存在JQuery,这在问题中没有提到。这与问题中的代码有什么不同(除了使用JQuery)?您不应该使用事件处理程序属性,如。onclick=…
,而是使用。addEventListener()
API“是否可能”,您尝试过吗?如果您遇到问题,则值得在问题中提及。我已尝试运行问题中的代码,但事件函数似乎未运行。我怀疑是因为它正在失去与onreadystatechange
事件触发的竞争。我没有尝试避免竞争条件,因为我知道您不应该使用事件处理程序属性,如。onclick=…
,而应使用。addEventListener()
API“是否可能”,您尝试过吗?如果您遇到问题,则值得在问题中提及。我已尝试运行问题中的代码,但事件函数似乎未运行。我怀疑是因为它正在失去与onreadystatechange
事件触发的竞争。我没有尝试避免竞争条件,因为我知道没有办法。我想提供从父窗口运行的脚本。你能想到我该怎么做吗?要么插入
标记,要么尝试targetWindow.eval()
我想提供从父窗口运行的脚本。你能想到我该怎么做吗?要么插入
标记,要么尝试targetWindow.eval()