Có vẻ như từ các thử nghiệm của tôi rằng một thẻ tập lệnh có thể bị xóa khỏi DOM mà không có bất kỳ tác động nào lên JavaScript mà nó chứa.
Thử nghiệm này phá hủy các nút DOM của tập lệnh cách một phần thông qua thực thi. Ngay cả điều này không ảnh hưởng đến tập lệnh, biến số count
được gán giá trị 1
sau thẻ tập lệnh đã bị xóa khỏi DOM.Việc xóa thẻ tập lệnh HTML có ảnh hưởng đến JavaScript mà nó chứa không?
<!DOCTYPE html>
<html lang="en">
<head>
<title> Test </title>
<script id="jQueryScriptTag" src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
</head>
<body>
<button id="testBtn">Click to test</button>
<div id="output"></div>
<script id="testCodeScriptTag">
var count;
$("#jQueryScriptTag").remove();
$("#testCodeScriptTag").remove();
$("#output").append(
"<p>jQueryScriptTag is " + document.getElementById("jQueryScriptTag") + "</p>" +
"<p>testCodeScriptTag is " + document.getElementById("testCodeScriptTag") + "</p>" +
"<p>count is " + count + "</p>"
);
count = 1;
$("#testBtn").click(function(){
$("#output").append(
"<p>count is " + (count++) + "</p>"
);
});
</script>
</body>
</html>
Trường hợp sử dụng loại bỏ an toàn các phần tử tập lệnh bên thứ ba được chèn vào từ trang chủ.
Khi Javascript được phân tách, nó được thêm vào phạm vi toàn cầu (đối tượng cửa sổ). Vì vậy, phần tử chỉ là một vùng chứa văn bản. – Mouser
Sau khi javascript được thực hiện, nó không phải là dễ dàng như chỉ cần loại bỏ các kịch bản để làm cho nó un-thực hiện – adeneo