2014-01-28 168 views
0

我正在編寫一個移動應用程序(PhoneGap),並希望能夠運行本地JS文件或下載新版本的JS文件並使用此版本。加載JavaScript動態

在第一個實例中,我試圖設置腳本對象的'src'屬性,我可以看到它的工作(使用fiddler)。但是,儘管我已經加載了腳本,但我無法訪問任何對象,但不知道爲什麼。

我的代碼:

function LoadApplicationJs() { 
     var AppJs = localStorage.getItem("ApplicationJs"); 

     if (AppJs == null) { 
      $("#Application").attr("src","Application.js"); 


     } 
    } 

LoadApplicationJs(); 
alert(app); 

任何想法?

謝謝 保羅。

回答

1

您是否考慮使用Jquery getScript從服務器加載JavaScript文件,並在全局上下文中執行該腳本。

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

從jQuery的樣本:

$.getScript("ajax/test.js", function(data, textStatus, jqxhr) { 
    console.log(data); // Data returned 
    console.log(textStatus); // Success 
    console.log(jqxhr.status); // 200 
    console.log("Load was performed."); 
}); 

最近,類似的問題被張貼在requirejs是更適合的情況下,它也有助於任務:

RequireJS Demo

+0

謝謝,但我認爲這是更多的時間問題,不知道,我已經加載JS文件,我可以看到它已被加載,但無法訪問應用程序對象。 – user3039902

+0

通過簡單地添加一個文件到你的html它不會執行它。在使用$ .getScript的情況下,它們使用文件的源代碼並使用jQuery.globalEval(text)執行它;如果你不想使用JQuery,你的選擇是使用eval函數,但是你需要獲取源代碼並重復JQuery的工作 – Dalorzo

+0

這裏是源代碼,如果你想: https://github.com/ jquery/jquery/blob/master/src/ajax/script.js – Dalorzo

0

你也可以使用RequireJS來加載和評估你的javascript http://requirejs.org

require(["helper/util"], function(util) { 
    //This function is called when scripts/helper/util.js is loaded. 
}); 
0

不確定它有幫助,但有些設備需要更高的javascript。有一次,當我的客戶在他的設備上測試了一個應用程序並且它在我的工作之後崩潰時,它發生在我身上。該問題是一個返回不同函數的函數(返回f()),它假設返回一個字符串。 allas,之前我寫回來f()+「」它崩潰時,我試圖訪問像長度字符串屬性。
如果您可以指定您的phonegap和操作系統的版本以及在哪個設備上工作,它可能會有所幫助。如果你可以發佈你設法加載並且不起作用的代碼,而不是代碼調用它,你說沒有什麼不對,它會幫助更多。

+0

設備上的腳本失敗。 Phonegap 3.1但在我的瀏覽器上工作。無論哪種方式放棄,沒有時間。 – user3039902