2011-01-12 24 views
5

Với $ .getScript tôi có thể tải các tệp js khi đang di chuyển. Có thể "dỡ bỏ" một số tệp này không?Tải các tệp đã tải bằng getScript?

Tôi có bảng điều khiển quản trị dựa trên ajax. Tôi có 3 phần. Khi nhấp vào từng phần, tôi chỉ muốn tải các tệp được liên kết với nó. Khi chuyển sang phần khác, tôi muốn tải các tập tin không cần thiết.

+1

lợi ích của dỡ những tập tin này là gì? – rahul

+1

Tôi không nghĩ rằng nó có thể, ít nhất là không cho tất cả các trình duyệt. Khi mã JS được tải vào trình duyệt, mã sẽ ở đó cho đến khi trang được tải. bạn là gì lo lắng về? –

Trả lời

11

"Dỡ", nếu nó là thực sự có thể, sẽ không có ý nghĩa nhiều ở đây. Hãy lùi lại một bước và nhìn vào lý do tại sao bạn không tải tất cả các file để bắt đầu với:

  • Họ một yêu cầu HTTP và X byte, nếu bạn không cần đến chúng, không nhận được chúng
  • họ có những ảnh hưởng không mong muốn - bạn không muốn những gì X kịch bản không để xảy ra ở đây

Bây giờ nhìn vào nó từ phía bên kia, bạn đã nạp họ, có nghĩa là cả những điều trên có đã xảy ra, bạn đã thanh toán yêu cầu cos t nhận được chúng và những gì họ đã làm. Ngoài ra, hiệu ứng mà chúng có trên trang không thể hoàn tác về mặt tổng thể. Chỉ cần xóa <script> sẽ không xóa các chức năng mà nó đã khai báo, trình xử lý sự kiện được đính kèm, v.v.

Trong ngắn hạn, bạn đang cố gắng tải chưa? Nếu nó là để loại bỏ các hiệu ứng, cũng là của một người không dễ dàng, không phải trong một cách chung chung anyway. Nếu nó làm sáng trang ... không có lợi ích ở đây, bạn thực sự sẽ phải chịu chi phí xóa phần tử, không có lợi ích gì cho khách hàng ở phía JavaScript của mọi thứ.

+0

Tôi sử dụng plugin tự động hoàn thành ui. Từ cơ sở dữ liệu tôi nhận được thông tin và đưa vào mảng javascript. Mảng này được chuyển tới ui tự động hoàn thành. Mảng bao gồm khoảng 100 000 phần tử. Tôi e ngại vì sợ thời gian để ăn nhiều bộ nhớ máy tính. – Nick

+3

@ John - Oh trong trường hợp đó bạn chỉ đang tìm kiếm ['delete'] (https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/delete), như thế này:' delete myArray; 'để giải phóng bộ nhớ. –

+2

@Nick - nếu tôi muốn chạy một số bài kiểm tra đơn vị, một số người trong số họ sẽ yêu cầu tôi tải đoạn mã html và js quảng cáo từ máy chủ, sau khi hoàn thành một loạt các bài kiểm tra tôi muốn xóa tất cả các phần tử dom, objetcs, hành động ... VÀ tất cả các tập lệnh tôi đã tải xuống cho đợt thử nghiệm đó. –

8

Theo chỉ định của Nick Craver, thật khó để hiểu lý do tại sao bạn muốn làm điều đó.

Tuy nhiên, nếu có lý do hợp lệ để làm như vậy. Tôi sẽ đặt tất cả các mã của kịch bản nạp trong một lớp học. Và khi tôi muốn dỡ bỏ điều này, tôi sẽ chỉ định nó cho null. ví dụ.

//external file: 
o1=new Object(); 
o1.function1=function(){ 
    //blah blah blah 
    }; 
o1.function2=function(){ 
    //blah blah blah 
    }; 
o1.var1=1; 

//and if when i'll need to get rid of all of this i can just 
o1=null; 
+0

Sẽ không xóa o1 hiệu quả hơn cài đặt thành null? –

+0

@AresAvatar xóa chỉ hoạt động với các thuộc tính đối tượng. Vì vậy, trong trường hợp này nó sẽ làm việc như o1 được nối thêm vào đối tượng cửa sổ như một thuộc tính. Nhưng nếu nó là var o1 = new Object() nó sẽ thất bại. Vì vậy, gán cho null là một lựa chọn an toàn hơn trong quan điểm của tôi, cộng với nó có lẽ là nhanh nhất là tốt. vì nó chỉ là một thao tác đơn giản so với một hàm gọi – Ivan

+0

Ivan, điều đó không đúng. Tôi có thể xóa "var o1 = {};" và o1 sau đó không được xác định. Ngoài ra, xóa không phải là cuộc gọi hàm. Nó được xây dựng trong hoạt động. Thiết lập để null lá o1 được xác định. –

7

Tôi nghĩ rằng có lý do hợp lệ để tải và dỡ tải tập lệnh. Tôi đã viết một công cụ giám sát nơi nội dung được hoán đổi vào và ra khỏi trung tâm <div> mọi lúc. Mỗi tải yêu cầu các chức năng mới được gắn vào nội dung vừa tải. Nếu bạn (un) tải js cụ thể cho (un) tải nội dung, sau đó bộ nhớ còn nhỏ. Và bạn có thể sử dụng lại các tên hàm được xác định trước đó cho các phản hồi hơi khác nhau, trong khi viết xhtml chung.

Giả sử một <div> với thông tin về sự an toàn của dữ liệu. Người dùng muốn chỉnh sửa bản ghi cụ thể đó để nội dung <div> được thay thế bằng biểu mẫu với tất cả các loại hành vi trên các nút, hộp kiểm, v.v. Biểu mẫu bị hủy và <div> được thay thế bằng nội dung gốc nhưng phản ánh các thay đổi . Biểu mẫu đã biến mất và do đó, cần có bất kỳ hành vi liên quan nào.

I.m.h.o. tải trong một số nhất định <div> trên trang của bạn x.htm + x.css + x.js và thay thế chúng khi nội dung và hành vi khác là cần thiết cho đến khi phân tích lại nội dung mới và đính kèm tất cả các phản ứng có thể ngay cả khi một số nút hoặc lớp nhất định bị thiếu trong nội dung mới.

Thay vì tệp javascript lớn, một tập hợp các mô-đun js có thể cắm được giữ mã của tôi được tổ chức tốt và duy trì hành vi ajax tương đối dễ dàng. Hỗ trợ cho một chương trình như vậy trong jQuery sẽ là một trợ giúp to lớn (đối với tôi).

+0

bạn có thể bắt đầu đăng mã ví dụ của mình không? – blogs4t

0

Bạn chỉ có thể thêm và loại bỏ các file js từ đầu:

$('script').last().remove();`//remove last file from html file 
$('head').append('<script src=""></script>'); //add js file 
Các vấn đề liên quan