2012-01-27 24 views

Trả lời

15

Dán này trong vòng onclick của nút đó (sửa url trong dòng thứ 3):

var script = document.createElement("script"); 
script.setAttribute("type", "text/javascript"); 
script.setAttribute("src", "url to the script file here"); 
document.getElementsByTagName("head")[0].appendChild(script); 

Tập lệnh đó sẽ bắt đầu được tải xuống ngay lập tức sau khi dòng 4 được thực hiện, và ngay khi nó được tải xuống, nó sẽ thực thi hoặc có thể sử dụng được.

+2

Đảm bảo có phần tử đầu. Nếu không, thêm vào cơ thể hoạt động quá. Btw, +1 để gắn bó với JavaScript thuần túy vì câu hỏi không được gắn thẻ với jQuery. –

+0

Nếu tôi thêm hai tập lệnh bằng phương pháp này thì sao? Họ sẽ bắt đầu tải xuống cùng một lúc hay thứ hai sẽ chờ trong lần đầu tiên? –

7

Vâng, jQuery getScript method làm cho điều này tầm thường:

//on button click event: 
$.getScript(urlOfScript); 

Ngoài ra chỉ sử dụng phương pháp javascript mẹ đẻ:

//on button click event: 
var head = document.getElementsByTagName('head')[0]; 
var script = document.createElement('script'); 
script.type = 'text/javascript'; 
script.src = 'urlOfScript'; 
head.appendChild(script); 
1

Tất cả câu trả lời hay ở trên. Bạn cũng có thể tải js qua ajax như bất kỳ đoạn html nào khác. dụ viết tắt:

start.html

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
</head> 
<body> 
    <a href="#" onclick="$('#result').load('start.js'); return false;">start</a> 
    <div id="result"></div> 
</body> 
</html> 

start.js

<script type="text/javascript"> 
    alert('Hello world!'); 
</script> 

Bạn không cần phải jquery cho ajax - Tôi chỉ sử dụng nó như là nhanh chóng bằng chứng của khái niệm.

0

Ngoài ra còn có một phương pháp jquery ở đây để đạt được như vậy.

let src = 'http://www.example.com/dosome/afsddfa'; 
$('<script>').attr(
{ 
    src: src, 
    type: 'text/javascript' 
}).appendTo('body'); 

Nó sẽ tạo phần tử tập lệnh và nối phần tử đó vào phần thân.

Bạn cũng có thể sử dụng .appendTo('head').

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