如何将远程JavaScript应用程序加载到cordova Windows Phone 8.1应用程序并让它访问cordova插件

cod*_*066 9 gwt cordova windows-phone-8.1

我们正在尝试创建一个相对较薄的cordova应用程序,以部署到Windows Phone 8.1平台,该平台从远程服务器将javascript应用程序加载到其主webView中,同时还保持对cordova/phonegap插件的访问.我们已在Android中成功完成此操作(请参阅本文的底部).

远程应用程序需要以下功能.

  • 访问cordova插件.
  • 设备离线时的持久性.
  • 应用程序中数据的持久性,特别是在设备的电源循环时.我们打算为此使用indexDb.

这有可能吗?如果可以的话怎么样?

Windows Phone 8.1中的当前播放状态

window.location = remoteUrl ;
Run Code Online (Sandbox Code Playgroud)

导致remoteUrl在系统浏览器中打开.这不是我们要求的.

Windows平台的inapp浏览器与cordova wiki中描述的略有不同.它暗示了

window.open('http://whitelisted-url.com', '_self');  
Run Code Online (Sandbox Code Playgroud)

将打开Cordova WebView中的URL.这不会发生.

我们可以手动创建Web视图并将其指向远程应用程序

var wv = dodument.createElement('x-ms-webview');
wv.style.width = "100%";
wv.style.height = "100%";
wv.navigate(remoteUrl);
document.body.appendChild(wv);
Run Code Online (Sandbox Code Playgroud)

但是,这不允许我们访问cordova插件,即使服务器将cordova.js文件作为下载的应用程序的一部分提供.

还不确定webview是如何打包的,以及在Windows应用程序执行之间缓存数据的持久性.

我们的Android Soulution

包括inappBrowser插件.

config.xml中

<access origin="*" />
Run Code Online (Sandbox Code Playgroud)

在Android Play商店应用程序中,我们执行:

function launchRemote()
{
   window.open(remoteUrl,'_self');
}
document.addEventListener('deviceready', launchRemote, false);
Run Code Online (Sandbox Code Playgroud)

远程服务应用程序启动页面包括该条目

<script type="text/javascript" src="cordova.js"></script>
Run Code Online (Sandbox Code Playgroud)

并在运行后从cordova项目平台\ android\assets\www direcory复制到服务器cordova.js,cordova_plugins.js文件和插件目录

cordova build android
Run Code Online (Sandbox Code Playgroud)

发布的文档.

cordova 4.0.0 Cordova主要文档

小智 0

难道你不能在 webView 加载后尝试创建一个脚本元素吗?

尝试设置此代码:

    `var script = document.createElement('script');
     script.onload = function() {
       alert("Script loaded and ready"); //callback function
     };
    script.src = "http://whatever.com/the/script.js";
    document.getElementsByTagName('head')[0].appendChild(script);`
Run Code Online (Sandbox Code Playgroud)

关于函数“onDeviceReady”。

来源:同步 document.createElement("script")