2012-02-27 35 views
20

Tôi đang phát triển một ứng dụng bằng PhoneGap và jQuery Mobile.

Bây giờ khi trang được tải thì tôi muốn tải script(.js file). Về cơ bản là onDeviceReady hoặc $(document).ready(). Làm thế nào để làm điều đó?

Trả lời

40
//wait for document.ready to fire 
$(function() { 

    //then load the JavaScript file 
    $.getScript('script.js'); 
}); 

http://api.jquery.com/jquery.getscript

//create a callback function 
function myCallback() { 


    //create a script element and set it's type and async attributes 
    var script = document.createElement('script'); script.type = 'text/javascript'; script.async = true; 

    //set the source of the script element 
    script.src = 'script.js'; 


    //add the script element to the DOM 
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(script, s); 

} 

//add event listener for the deviceready function to run our callback function 
document.addEventListener("deviceready", myCallback, false); 

http://docs.phonegap.com/en/1.4.1/phonegap_events_events.md.html#deviceready

đoạn mã thứ hai này là một phiên bản sửa đổi nhẹ của mã Google Analytic, được sử dụng để thêm một kịch bản để DOM không đồng bộ.

CẬP NHẬT

Bạn cũng có thể thiết lập các thuộc tính của defer thẻ <script> để true và nó sẽ không được thực hiện cho đến sau khi DOM đã được chuẩn bị. Xem một số tài liệu tại đây: https://developer.mozilla.org/en-US/docs/HTML/Element/Script

+2

Cảm ơn Jasper.Answer là chính xác ...: D –

+0

Tôi cũng đang gặp phải sự cố khi IE8 đang bẻ khóa khi làm mới. Sử dụng $ (tài liệu) .ready() gọi là những gì cố định nó cho tôi. Thx cho câu trả lời! – PhilNicholas

+1

NB: getScript là không đồng bộ nên việc gọi hàm được khai báo trong tập lệnh được gọi có thể dẫn đến lỗi "không xác định". Xem: http://stackoverflow.com/questions/1130921/is-the-callback-on-jquerys-getscript-unreliable-or-am-i-doing-something-wrong – Costa

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