Như tiêu đề nói, nếu tôi loại bỏ một thẻ script từ DOM sử dụng:Liệu jQuery .remove() có xóa javascript đã nạp khi nó được sử dụng để xóa một thẻ script không?
$('#scriptid').remove();
Liệu javascript bản thân vẫn còn trong bộ nhớ hoặc là nó làm sạch?
Hoặc ... tôi có hoàn toàn hiểu nhầm cách thức mà trình duyệt xử lý javascript không? Điều này hoàn toàn có thể.
Đối với những người quan tâm đến lý do của tôi để hỏi xem dưới đây:
Tôi đang di chuyển một số tương tác javascript phổ biến từ tập tin kịch bản tĩnh vào những tạo động trong PHP. Được tải theo yêu cầu khi người dùng yêu cầu họ.
Lý do làm việc này là để di chuyển máy chủ logic và chạy một tập lệnh nhỏ, được trả về từ máy chủ, khách hàng. Thay vì có một kịch bản lớn có chứa một lượng lớn logic, khách hàng.
Đây là một cách tiếp cận tương tự như những gì facebook không ...
Facebook talks frontend javascript
Nếu chúng ta lấy một hộp thoại đơn giản ví dụ. Thay vì tạo ra html trong javascript, gắn nó vào dom, sau đó sử dụng tiện ích hộp thoại của jqueryUI để tải nó, tôi bây giờ làm như sau.
- yêu cầu Ajax được thực hiện để dialog.php
- Server tạo ra html và javascript đó là đặc trưng cho hộp thoại này sau đó mã hóa chúng như JSON
- JSON được trả lại cho khách hàng.
- HTML được nối vào
<body>
sau đó khi điều này được hiển thị, javascript cũng được nối vào DOM.
javascript được thực thi tự động khi chèn và hộp thoại động mở ra.
Làm điều này đã giảm số lượng javasript trên trang của tôi một cách đáng kể tuy nhiên tôi lo ngại về việc dọn dẹp javascript đã chèn.
Rõ ràng khi hộp thoại đã bị đóng cửa nó được lấy ra từ DOM sử dụng jQuery:
$('#dialog').remove();
Các javascript được gắn với một ID và tôi cũng loại bỏ điều này từ DOM qua cùng một phương pháp.
Tuy nhiên, như đã nêu ở trên, không sử dụng jQuery .remove() thực sự xóa javascript khỏi bộ nhớ hay đơn giản xóa phần tử <script>
khỏi DOM?
Nếu có, có cách nào để làm sạch điều này không?
Nếu bạn lo lắng về lượng JS để tạo ra một hộp thoại , bạn có thể nhìn vào EJS. Điều này sẽ cho phép bạn tạo các mẫu HTML từ JS. – westo
Cảm ơn westo, tôi sử dụng JsRender cho khuôn mặt khách hàng. tuy nhiên cách tiếp cận mà tôi đã đề cập ở trên không chỉ dành cho các hộp thoại, mà còn cho rất nhiều tương tác khác trong đó các mẫu không phù hợp. Có lẽ ví dụ về hộp thoại không phải là một ví dụ hay. – gordyr