2016-07-25 67 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