Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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 TypeError:无法读取属性';控制台';空的_Javascript - Fatal编程技术网

Javascript TypeError:无法读取属性';控制台';空的

Javascript TypeError:无法读取属性';控制台';空的,javascript,Javascript,以下是从第三方库中提取的有罪片段: function hasConsoleLogger() { return window.console && window.console.log; } 没什么特别的,但它令人惊讶地返回: TypeError:无法读取null的属性“console” 它在浏览器上下文(Chrome)中执行,因此不涉及Node.js非窗口内容 我已检查是否存在潜在的恶意删除窗口或窗口=null,但未成功 出现此错误的应用程序使用友好的iframe和do

以下是从第三方库中提取的有罪片段:

function hasConsoleLogger() {
    return window.console && window.console.log;
}
没什么特别的,但它令人惊讶地返回:
TypeError:无法读取null的属性“console”

它在浏览器上下文(Chrome)中执行,因此不涉及Node.js非窗口内容

我已检查是否存在潜在的恶意
删除窗口
窗口=null
,但未成功

出现此错误的应用程序使用友好的iframe和document.write()调用运行

不幸的是,我不能提供任何演示链接的问题


因此,我想我的问题是“浏览器中的窗口对象怎么会被取消或错误地无法访问?”

当窗口关闭时,Chrome首先设置
窗口。控制台
设置为
null
,然后设置
窗口

以下代码将通过创建从不同上下文引用
window
的函数可靠地再现错误:

var w = window.open('/');
// Using document.write to run code in the context of the other window
w.document.write('<script>opener.func = function(){return window;};</script>');
w.close();
// Naive timer to wait for Garbage collection
setTimeout(function() {
    console.log(func() === null); // true
}, 100);
var w=window.open('/');
//使用document.write在另一个窗口的上下文中运行代码
w、 write('opener.func=function(){return window;};');
w、 close();
//等待垃圾回收的朴素计时器
setTimeout(函数(){
console.log(func()==null);//true
}, 100);

我刚刚试着做:
window=null;它在Chrome中无声地失败了。依我看,它足够聪明来阻止这种分配。它是在全局范围内还是在一个函数内?