2011-05-15 66 views
1

在Firefox 4.0或Internet Explorer 8+中不会发生此错误。谷歌浏览器未被捕获的javascript异常

我创建一个新的空标签,并打开控制台(按Ctrl + Shift + I,然后按Esc),并粘贴以下代码:

var cnt = 0; 
(function() {document.body.innerHTML = cnt;window.setTimeout(arguments.callee,100);})(); 

(function(){cnt++;window.setTimeout(arguments.callee,0);})(); 

有时,在这一点上的错误,但并非总是如此。

在此之后我贴得更:

(function(){cnt++;window.setTimeout(arguments.callee,0);})(); 

后〜30秒我得到任何这样的错误:

Uncaught TypeError: Cannot read property 'offsetHeight' of null
Uncaught TypeError: Cannot read property 'classList' of null

的问题:是什么问题?我该如何解决这个问题?

UPDATE:

这个错误,当我打开我的选项卡之间切换发生,但也随机。

回答

1

这是因为chrome://newtab预计某些元素在那里(为了JavaScript的目的),但你通过使用document.body.innerHTML来清除它们。你可以注入一个元素来代替你的输出,像这样的东西应该可以工作:

var cnt = 0; 
document.body.innerHTML = '<div id="abcd">...</div>' + document.body.innerHTML; 

(function(){ 
    document.getElementById('abcd').innerHTML=cnt; 
    window.setTimeout(arguments.callee,100); 
})(); 

(function(){ cnt++;window.setTimeout(arguments.callee,0); })();