Khi tôi thực hiện trang HTML thử nghiệm dưới đây trong Chrome, tôi thấy sau trong debug console:parentNode bị mất khi đóng Javascript bên trong? Lỗi Chrome?
Has parent? true
Has parent? false
Tôi có ngay trong giả định rằng đây là một lỗi Chrome (nó không xảy ra trong các trình duyệt khác), hoặc là Chrome có quyền làm điều này vì một lý do nào đó không? Nó dẫn đến một lỗi trong một trong các ứng dụng web của tôi và cuối cùng tôi đã cô lập đoạn mã này để repro vấn đề cốt lõi.
Đây là trang kiểm tra:
<!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: Tôi có nên nói rằng tôi đang thử nghiệm trên Windows 7 với Chrome 49.0.2623.87 m (64-bit). Cũng có thể repro trên OSX 10.11.2 với Chrome 49.
Ngoài ra, tôi nên đề cập đến đôi khi nó hiển thị đúng/đúng và đôi khi đúng/sai. Bạn có thể phải tải lại trang một vài lần để chứng kiến sự cố. Tôi không chắc chắn, nhưng nó có thể là các công cụ gỡ lỗi (console) cần phải được mở là tốt.
Cảm ơn nhiều.
Làm việc cho tôi trong Chrome 48 OSX – elclanrs
Tôi không thể tạo lại (Chrome 48.0.2564.109). Bạn có chắc chắn rằng 'testParentEl' không bị đột biến giữa các cuộc gọi không? – Bergi
Tôi nên nói rằng tôi đang thử nghiệm trên Windows 7 với Chrome 49.0.2623.87 m (64-bit). Ngoài ra, tôi nên đề cập rằng đôi khi nó hiển thị đúng/đúng và đôi khi đúng/sai. Bạn có thể phải tải lại trang một vài lần để chứng kiến sự cố. Tôi không chắc chắn, nhưng nó có thể là các công cụ gỡ lỗi (console) cần phải được mở là tốt. – logidelic