Kiedy wykonać poniższą testową stronę HTML w Chrome, widzę następujące w konsoli debugowania:ParentNode jest zagubiony na wewnętrznym zamknięciu Javascript? Błąd Chrome?
Has parent? true
Has parent? false
mam rację zakładając, że to błąd Chrome (to nie zdarza się w innych przeglądarkach) lub czy Chrome ma do tego prawo z jakiegoś powodu? To spowodowało błąd w jednej z moich aplikacji internetowych i w końcu wyizolowałem ten fragment, aby naprawić główny problem.
Oto strona testowa:
<!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>
EDIT: Powinienem wspomnieć, że jestem testowania Windows 7 z Chrome 49.0.2623.87 m (64-bit). Był również w stanie repro na OSX 10.11.2 z Chrome 49.
Należy również wspomnieć, że czasami wyświetla true/true, a czasem true/false. Być może będziesz musiał przeładować stronę kilka razy, aby być świadkiem problemu. Nie jestem pewien, ale możliwe, że narzędzia do debugowania (konsola) również muszą być otwarte.
Wielkie dzięki.
Działa dla mnie w Chrome 48 OSX – elclanrs
Nie mogę odtworzyć (Chrome 48.0.2564.109). Czy jesteś pewien, że 'testParentEl' nie jest zmutowany między połączeniami? – Bergi
Powinienem wspomnieć, że testuję na Windows 7 z Chrome 49.0.2623.87 m (64-bit). Należy również wspomnieć, że czasami wyświetla on wartość true/true, a czasem true/false. Być może będziesz musiał przeładować stronę kilka razy, aby być świadkiem problemu. Nie jestem pewien, ale możliwe, że narzędzia do debugowania (konsola) również muszą być otwarte. – logidelic