Nếu tôi có mã JavaScript sau:Removed JavaScript là vẫn thực thi
<script id="someJS">
var boom = 'boom';
function example(){
alert(boom);
}
</script>
và sau đó làm:
$('#someJS').remove();
tôi vẫn có thể gọi example()
dù rằng hàm JavaScript không còn bên trong DOM ... Làm thế nào tôi có thể loại bỏ nó?
Tôi không muốn vô hiệu (các) chức năng thực tế và các biến với: boom = null; example = null;
vì tôi không phải lúc nào cũng biết nội dung bên trong tệp JavaScript. Ví dụ: tên hàm, biến, v.v. Tôi cần có khả năng xóa toàn bộ nội dung nằm trong thẻ tập lệnh đó.
Cập nhật: Đối với những người muốn biết các trường hợp sử dụng cho việc này:
Về cơ bản trong một ứng dụng tôi đang làm việc trên, chúng tôi có thêm tùy chỉnh JavaScript cho khách hàng chắc chắn rằng khi một nút được nhấp ví dụ lưu, sau đó kiểm tra xem một số hàm có tồn tại không và sau đó chạy chúng. Tuy nhiên, vì nút lưu này là chung chung, điều đó có nghĩa là mã tùy chỉnh được gọi tất cả thời gian sau khi được thêm ngay cả khi mã không còn liên quan nữa.
Các giải pháp chúng tôi đã đưa ra (ai đó đã đăng tải này như một câu trả lời nhưng họ loại bỏ nó vì một lý do) là không gian tên nó tất cả như:
DynamicJS = {
boom: 'boom',
example: function(message) {
alert(message);
}
}
Và sau đó chúng tôi chỉ có thể làm: delete DyanmicJS
;
Loại bỏ tất cả các chức năng và biến bên trong vùng tên này khỏi phạm vi toàn cầu, hiệu quả khi tắt tệp tập lệnh được thêm vào.
Mặc dù tôi chắc chắn đây không phải là giải pháp hoàn hảo như thể bạn có người nghe sự kiện bên trong tệp, tôi chắc chắn rằng họ vẫn sẽ tồn tại!
_ "Tôi không muốn vô hiệu chức năng thực sự, vì tôi không phải lúc nào cũng biết nội dung bên trong tệp JS." _ Chính xác thì ý bạn là gì? – Cerbrus
Như trong 'ví dụ = null'; – Cameron
Tại sao bạn vẫn muốn xóa một hàm? khía cạnh tiêu cực của vẫn còn có nó là gì? –