2012-01-12 71 views
4

我正在用Phonegap編程一個iPhone應用程序。我有本地.html.js文件。以下是我的index.html文件:jQuery的.getScript()...我做錯了什麼?

function onBodyLoad() { 
    document.addEventListener("deviceready", deviceReady, false); 
} 

function deviceReady() { 
    $.getScript("js/order.js"); 
} 

我研究和研究,但就是無法弄清楚,爲什麼我的「order.js」文件是沒有得到通過$.getScript方法調用。有任何想法嗎?或者是否有其他方法可以在我的index.html的deviceReady函數內調用.js文件?

+2

deviceready事件觸發嗎? – epignosisx 2012-01-12 23:46:16

+0

設置一個警報或類似的東西來記錄'deviceready'事件觸發,我曾經有過一些版本的PhoneGap沒有觸發'deviceready'事件(即使API可以使用)。 – Jasper 2012-01-12 23:51:11

+0

是的,deviceready正在觸發。我在deviceReady下調用了其他插件,但不知道如何調用.js文件。 – 2012-01-12 23:53:07

回答

0

對我來說,以下解決方案工作得很好。

  1. 添加使用Ajax和緩存加載腳本的自定義jQuery函數:

    function init() 
    { 
        // Create a custom cached script importer based on ajax 
        jQuery.cachedScript = function(url, options) 
        { 
         // Allow custom options, but dataType, cache and url are always predefined 
         options = $.extend(options || {}, 
         { 
          dataType: "script", 
          cache: true, 
          url: url 
         }); 
         return jQuery.ajax(options); 
        }; 
    
        importScripts(); 
    } 
    
  2. 導入腳本和可選處理donefail

    function importScripts() 
    { 
        $.cachedScript("js/events.js") 
         // Wait for the script to be loaded, before adding the listener 
         .done(function() 
         { 
          document.addEventListener("deviceready", onDeviceReady, false); 
         }); 
        $.cachedScript("js/navigation.js"); 
        $.cachedScript("js/mark.js"); 
    } 
    

那它:) 可能會發現更多信息here