2012-10-15 68 views
2

我在iOS上使用Phonegap 2.1.0。在我的main.html文件中,我使用jQuery加載了一些html。iOS上的Phonegap + head.js不起作用?

但是,我正在加載的一個html文件有其自己的Javascript,以相同的方式加載其他文件($ .ajax等)。 Android中的Phonegap加載這些文件並在其中執行Javascript,但iOS不。

實施例: 的index.html:

<...> 
    <body> 
    <script> 
     $(document).on('pageinit', function() { 
     $.ajax({ 
      url: 'some.url', 
      success: function(data, status, jqxhr) { 
      $("#some-div").html(data); 
      }, 
      error: function(jqxhr, status, error) {} 
     }); 
     }); 
    </script> 
    </body> 
</...> 

some.url:

<script type="text/javascript"> 
    head.js(
    "config-file.js", 

    function() { 
     $.ajax({ 
     url: PATH + 'some-other.url', // PATH? see below 
     success: function(data, status, jqxhr) { 
      $("#some-div").html(data); 
     }, 
     error: function(jqxhr, status, error) {} 
     }); 
    }); 
</script> 

配置-file.js: VAR PATH = 'mypath中';

一些-other.url: 無法在iOS版

加載

所有加載的文件來自同一個域提供服務。

再次,上面的代碼在Android中工作。任何想法爲什麼iOS不能做到這一點,以及如何解決它?它是head.js嗎? (0.9.6)

+0

head.js在index.html文件中工作。但它似乎不能在加載的腳本中工作。試圖在index.html中使用函數:var headLoad = function(){head.js(arguments); };但那也行不通。 – Simon

+0

在iOS中,head.js和jquery的$ .ajax都不會從外部加載的腳本中獲取文件。如前所述,兩者都可以在Android中使用。我在Xcode中忘了什麼? – Simon

+0

如果我在Safari中運行應用程序(修改過的index.html,沒有cordova.js),一切正常...... – Simon

回答

1

由於您使用jQuery Mobile,它依賴於jQuery,爲什麼不只是使用jQuery來完成文件加載?

$.getScript('path') 
    .done(function(){ 
     ... 
}); 

否則,你也可以給HeadJS v0.99試試看看它是否修復你的問題。

+0

也請務必使用最新的jQuery版本,一些舊版本(我認爲1.7之前的東西)與本地文件有問題。 – Robert

+0

謝謝,我沒有意識到這個功能。 – Simon