2010-07-16 47 views
10

Có một lớp lót tôi có thể thực thi trong bảng điều khiển javascript để tải xuống và thực thi tập lệnh javascript từ nguồn từ xa không?Làm cách nào để tải xuống và chạy tập lệnh javascript từ bảng điều khiển javascript động?

Tôi đang tìm cách xem có cách nào hay không để tải xuống this script và sử dụng nó để thử nghiệm tương tác trên các trang ngẫu nhiên có thể không nói, jQuery đã tải.

[sửa: Tôi biết tôi tự động có thể tạo ra một yếu tố kịch bản nhưng lại có một cách đẹp hơn để làm điều này?]

Trả lời

9

Tôi đã viết một kịch bản ít cho điều đó.

var loadjQuery = function(cb){ 
    if(typeof(jQuery) == 'undefined'){ 
    var scr = document.createElement('script'); 
    scr.setAttribute('type', 'text/javascript'); 
    scr.setAttribute('src', 'http://code.jquery.com/jquery-latest.js'); 

    if(scr.readyState){ 
     scr.onreadystatechange = function(){ 
      if(scr.readyState === 'complete' || scr.readyState === 'loaded'){ 
       scr.onreadystatechange = null; 
       if(cb === 'function'){ 
        args = [].slice.call(arguments, 1); 
        cb.apply(this, args); 
       } 
      } 
     }; 
    } 
    else { 
     scr.onload = function(){ 
      if(cb === 'function'){ 
       args = [].slice.call(arguments, 1); 
       cb.apply(this, args); 
      } 
     }; 
    } 

    var head = document.getElementsByTagName('head')[0]; 
    head.insertBefore(scr, head.firstChild); 
    } 
} 

Trình duyệt chéo này hoạt động.

chỉnh sửa

Tôi đã cập nhật kịch bản đó như là một chức năng với một callback. Tóm tắt nên là:

loadjQuery(function(something){ 
    // execute code after library was loaded & executed 
}); 
+0

đẹp! chỉ cần thử mã của bạn và nó hoạt động tốt. Sẽ là đáng yêu nếu có một cách để có được nạp vào chrome và cung cấp cho nó một số dễ dàng để sử dụng phím tắt ... Tôi đoán đó là loại điều tôi sẽ phải viết một phần mở rộng Chrome cho. +1. – jkp

+0

'scr.setAttribute ('type', 'text/javascript');' là thừa. Ngoài ra, bạn có thể sử dụng 'scr.src = ...' thay vì 'scr.setAttribute ('src', ...)'. – James

+0

Biến "cb" là gì? – Zuks

1
+0

vấn đề có gà và trứng! Tôi muốn có thể tải jQuery vào các trang không tải nó. Ở mức nào, nếu họ có thể làm điều đó, rõ ràng là có thể, tôi đoán họ đang tự động tạo ra các phần tử kịch bản trừ khi có một cách tốt hơn. – jkp

1

Vâng, nó là khá đơn giản để có một đoạn mã javascript dài và đặt nó tất cả lại với nhau thành một dòng :)

cách tiếp cận này có một vài dòng bạn có thể trộn togehter thành một oneliner (nhưng tôi đoán bạn đang tìm kiếm một giải pháp ngắn hơn). Bạn sẽ phải đánh giá nội dung của hai thẻ script để tải các thư viện Google AJAX - đó là tất cả. Bạn có thể cần phải thực hiện cuộc gọi để nhận cuộc gọi đầu tiên.

+0

vâng, tôi cho rằng bạn là đúng, tôi đoán đó là những gì một bookmarklet là :) [sửa: ai đó đánh tôi với nó! http://www.learningjquery.com/2006/12/jquerify-bookmarklet - vui mừng tôi đã hỏi ngay bây giờ ....] – jkp

+0

đúng, đó là chức năng bookmarklet - tôi thường xuyên sử dụng nó để bao gồm lite firebug – Thariama

Các vấn đề liên quan