【发布时间】:2016-06-24 11:35:27
【问题描述】:
当我在 Chrome 中执行以下测试 HTML 页面时,我在调试控制台中看到以下内容:
Has parent? true
Has parent? false
我是否认为这是一个 Chrome 错误(它不会在其他浏览器中发生),或者 Chrome 是否出于某种原因有权这样做?它导致我的一个网络应用程序出现错误,我最终隔离了这个 sn-p 以重现核心问题。
这里是测试页面:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body class="">
<script>
function testDoodle() {
var testParentEl = document.createElement('div');
var testChildEl = testParentEl.appendChild(document.createElement('div'));
document.body.innerHTML+=('Has parent? ' + !!testChildEl.parentNode+'<br>');
console.log('Has parent? ' + !!testChildEl.parentNode);
setTimeout(function() {
document.body.innerHTML+=('Has parent? ' + !!testChildEl.parentNode+'<br>');
console.log('Has parent? ' + !!testChildEl.parentNode);
},
2000);
return;
}
testDoodle();
</script>
</body>
</html>
编辑:我应该提到我正在使用 Chrome 49.0.2623.87 m(64 位)在 Windows 7 上进行测试。还能够使用 Chrome 49 在 OSX 10.11.2 上重现。
另外,我应该提一下,有时它会显示真/真,有时会显示真/假。您可能需要重新加载页面几次才能看到问题。我不确定,但调试工具(控制台)可能也需要打开。
非常感谢。
【问题讨论】:
-
在 Chrome 48 OSX 中为我工作
-
我无法复制 (Chrome 48.0.2564.109)。您确定
testParentEl在调用之间没有发生变异吗? -
我应该提到我正在使用 Chrome 49.0.2623.87 m(64 位)在 Windows 7 上进行测试。另外,我应该提一下,有时它会显示真/真,有时会显示真/假。您可能需要重新加载页面几次才能看到问题。我不确定,但调试工具(控制台)可能也需要打开。
-
在相同的浏览器版本(Windows 10)上对我来说同样的问题
-
已更新至 Chrome 49 仍无法重现。
标签: javascript html google-chrome garbage-collection closures