Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.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_Visual Studio_Visual Studio 2015 - Fatal编程技术网

Javascript 无法将函数注入本机窗口

Javascript 无法将函数注入本机窗口,javascript,visual-studio,visual-studio-2015,Javascript,Visual Studio,Visual Studio 2015,我正试图在窗口中插入一个getStatus函数。具体来说,我想将其粘贴到窗口返回的窗口上。打开: window.open = function (open) { return function (url, name, opts) { var windowObj = open.call(window, url, name, opts); windowObj.getStatus = function () { return 1;

我正试图在
窗口中插入一个getStatus函数。具体来说,我想将其粘贴到
窗口返回的窗口上。打开

window.open = function (open) {
    return function (url, name, opts) {
        var windowObj = open.call(window, url, name, opts);

        windowObj.getStatus = function () {
            return 1;
        };

        return windowObj;
    };
}(window.open)
在代码的其他地方,我会:

var myWindow = window.open("...", "...", "...");
var a = myWindow.getStatus();
有时,当我从Visual Studio 2015进行调试时,我可以成功调用该函数,有时则无法调用,并导致崩溃:

0x800a01b6-JavaScript运行时错误:对象不支持属性或方法“getStatus”

有没有人经历过这样的问题?感觉像是时间问题。调试器可能有问题

有没有人经历过这样的问题

没有。我在Visual Studio 2013 Express edition中调试了多次,但没有崩溃。我能够调试它,没有任何问题


注意:对于问题的简化版本,以下回答可能听起来不符合上下文


坦率地说,我从来没有尝试过重写window的默认行为。但从你的尝试来看,尝试一下是很有诱惑力的

所以我在这里试过:

而且至少
警报(1)
的执行是一致的。我还将其修改为调用native
addEventListener
,并且它似乎也适用于以下条件:

  • 我使用了
    单击
    事件,而不是
    关闭
    <代码>卸载前
  • 也有效
  • 我使用了“about:blank”作为URL
  • 另外,如果您在子窗口中打开另一个页面,则无法在父窗口中处理它的JS事件。您需要在子窗口中打开的页面中处理适当的JS事件,并且需要从这些处理程序将信息传递到
    window.opener


    关于
    close
    事件,我从未使用过它(甚至没有听说过它:|)。相反,
    unload
    /
    beforeunload
    是通常使用的两个事件。

    我简化了我的问题。我认为这与重写addEventListener无关,而是与向window对象注入任何函数有关。这是否意味着,如果不进行调试,
    getStatus()
    执行时不会出现任何问题。只有在调试的时候你才会遇到问题?我还没有在没有调试器的情况下尝试过。这只是我的怀疑。