覆盖子窗口中的函数javascript?
我通过以下方式打开窗口: var popup=window.openurl,'Image','directories=no,height=640,location=no,menubar=no,resizeable=yes,scrollbars=yes,status=no,toolbar=no,width=680' 在子窗口中打开有函数OpenFileurl; 我可以在父窗口中覆盖此函数吗?或者从父窗口将单击事件绑定到子窗口中的元素,因为我无法编辑子页面。覆盖子窗口中的函数javascript?,javascript,jquery,Javascript,Jquery,我通过以下方式打开窗口: var popup=window.openurl,'Image','directories=no,height=640,location=no,menubar=no,resizeable=yes,scrollbars=yes,status=no,toolbar=no,width=680' 在子窗口中打开有函数OpenFileurl; 我可以在父窗口中覆盖此函数吗?或者从父窗口将单击事件绑定到子窗口中的元素,因为我无法编辑子页面。 父窗口和子窗口位于同一域中。以下是我将如
父窗口和子窗口位于同一域中。以下是我将如何创建它:
var popup =window.open(url,'Image', 'directories=no,height=640,location=no,menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no')
function waitOnloadWindow(){
var body = popup.document.getElementsByTagName("body");
// Not loaded yet
if(!body[0] || !popup.OpenFile){
setTimeout(waitOnloadWindow, 50);
}else{
// Replace child window function here
popup.OpenFile = function(url){ alert('replaced');}
}
}
waitOnloadWindow();
如果要替换多个函数,则使用更通用的方法:
function replaceWindowFunction(win, fnName, fnFunction) {
var body = popup.document.getElementsByTagName("body");
if(!body[0] || !popup[fnName]){ // Wait for loading
setTimeout(function() {
replaceWindowFunction(win, fnName, fnFunction);
}, 50);
}else{
// Replace child window function here
popup[fnName] = fnFunction;
}
}
// Usage:
var popup = window.open("test.html",'Image', 'directories=no,height=640,location=no,menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no')
replaceWindowFunction(popup, 'OpenFile', function() { alert('replaced'); } );
我更新代码。查看chid文档是否加载的正确测试是在替换它之前检查body和popup.OpenFile函数是否同时存在