2016-07-25 69 views
1

我有一個網站,我想將它加載到一個webview給網站一個本地的感覺。可以外部加載網站訪問cordova javascript

現在,使用window.location ='url'做起來相當簡單,但是當網站在網站上加載javascript無法訪問插件apis。所以看起來網站在沙箱內運行......無法訪問cordova apis。

有沒有辦法提供一個外部加載的網站訪問cordova apis?

我加載我使用<content src="http://myurl"/>外部網站在我的config.xml

+0

另一個建議是不加載你的網站爲主要出發文件。由於phonegap需要大量文件,因此首頁顯示可能需要很長時間。我會使用正常的本地index.html和它在deviceready上,加載您的網站與top.location.href = ...我所做的是一個加載程序頁面上啓動一個進度條,使用Ajax加載每個JS和CSS文件的網站需要。從那時起,所有內容都被緩存,所有頁面加載速度都很快。 –

回答

1

是的,你可以做到這一點。將項目中的所有cordova.js和插件文件上傳到您的服務器,然後在服務器上的頁面中加入它。務必將它們保存在與項目中相同的相關文件夾中。

<script type="text/javascript" src="cordova.js"></script> 

(請注意,我已經做了這個版本上3到5,但不是在6呢。)

+0

我覺得這是一個很好的方式來做到這一點,但似乎是唯一的方法。如果Cordova直接訪問API,將會很好。當在webview中加載資源時,這很可能會導致其他問題。 – bjorgvin

+1

我忘了補充的一件事是,平臺上的文件是不同的,所以你需要把它們全部上傳到各個平臺。此外,如果您升級您的Phonegap版本,則需要上傳新文件,但要保留使用舊版應用的人員的舊文件。這有點亂,但我只是有不同的文件夾,如ios.5.5.1,android.4.1.0等,然後把每個版本的所有文件放在它們中。當我從應用程序加載網站時,我在查詢字符串中包含平臺和版本,然後刪除一個cookie,以便它在每個頁面上加載正確的一個。 –

-1

使用inappbrowser您可以創建一個命令科爾多瓦的移動app.Simply安裝inappbrowser插件裏面你的網站的網頁視圖。

cordova plugin add cordova-plugin-inappbrowser --save 


    var app = { 
     // Application Constructor 
     initialize: function() { 
      this.bindEvents(); 
     }, 
     // Bind Event Listeners 
     // 
     // Bind any events that are required on startup. Common events are: 
     // 'load', 'deviceready', 'offline', and 'online'. 
     bindEvents: function() { 
      document.addEventListener('deviceready', this.onDeviceReady, false); 
     }, 
     // deviceready Event Handler 
     // 
     // The scope of 'this' is the event. In order to call the 'receivedEvent' 
     // function, we must explicitly call 'app.receivedEvent(...);' 
     onDeviceReady: function() { 
      // app.receivedEvent('deviceready'); 
      var element=document.getElementById('status-message'); 
      console.log(element); 
      var ref = cordova.InAppBrowser.open('url', '_blank', 'location=no'); 
      ref.addEventListener('loadstart', function(event) { 

       element.innerHTML="Please Wait App is loading....." ; 

       }); 



     } 

    }; 
+0

當我這樣做時,我的網站加載成功。然而,在從我的服務器加載的JavaScript中,我無法訪問cordova apis,其中沒有定義cordova:( 'Uncaught ReferenceError:cordova is not defined「,source:http://myserver.com/JavaScript/server-side .js' – bjorgvin

+0

它的webview你的網站,你將無法在這裏得到cordova api –

+0

inAppBrowser的文檔說: _ InAppBrowser窗口的行爲就像一個標準的Web瀏覽器,並且無法訪問Cordova API,因此,如果您需要加載第三方(不可信任)內容,建議使用InAppBrowser,而不是將其加載到主Cordova webview中。 但是我加載了可信內容,我希望它可以訪問* Cordova API * – bjorgvin