Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
覆盖子窗口中的函数javascript?_Javascript_Jquery - Fatal编程技术网

覆盖子窗口中的函数javascript?

覆盖子窗口中的函数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.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函数是否同时存在