Quando eseguo la seguente pagina HTML di prova in Chrome, vedo quanto segue nella console di debug:genitoreNode perso nella chiusura interna di Javascript? Bug di Chrome?
Has parent? true
Has parent? false
ho ragione nel ritenere che questo un bug Chrome (non accade in altri browser), o è Chrome nel suo diritto di farlo per qualche motivo? Il risultato è stato un bug in una delle mie app Web e alla fine ho isolato questo snippet per riprodurre il problema principale.
Ecco la pagina di prova:
<!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: Avrei detto che sto testando su Windows 7 con Chrome 49.0.2623.87 m (64-bit). È stato anche in grado di repro su OSX 10.11.2 con Chrome 49.
Inoltre, devo dire che a volte si mostra vero/vero e talvolta vero/falso. Potrebbe essere necessario ricaricare la pagina alcune volte per assistere al problema. Non sono sicuro, ma è possibile che anche gli strumenti di debug (console) siano aperti.
Grazie mille.
funziona per me in Chrome 48 OSX – elclanrs
non riesco a riprodurre (Chrome 48.0.2564.109). Sei sicuro che il 'testParentEl' non è mutato tra le chiamate? – Bergi
Avrei detto che sto testando su Windows 7 con Chrome 49.0.2623.87 m (64-bit). Inoltre, vorrei ricordare che a volte si mostra vero/vero e talvolta vero/falso. Potrebbe essere necessario ricaricare la pagina alcune volte per assistere al problema. Non sono sicuro, ma è possibile che anche gli strumenti di debug (console) siano aperti. – logidelic