我正在开发手机间隙应用程序,最近我们添加了对Windows 8.1平台的支持。应用程序使用Cordova FileSystem API下载/创建保存到设备的文件。无法在Windows 8.1平台上使用cordova inappbrowser打开本地文件
我一直在使用它看起来像这样
ms-appdata:///local/file.png
我检查我的电脑上的文件是应用程序的根文件夹下的LocalState文件夹中查看的URL成功保存文件到设备。但是,当我尝试使用inAppBrowser打开此文件时,什么都不会发生;没有报告错误消息,并且没有inAppBrowser默认事件触发。
function empty() { alert('here'); } //never fires
var absoluteUrl = "ms-appdata:///local/file.png";
cordova.InAppBrowser.open(absoluteURL, "_blank", "location=no", { loadstart: empty, loadstop: empty, loaderror: empty });
我已经验证该URL是通过调用有效以下内置的JavaScript的URL
Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri).done(function (file) {
debugger; //the file object contains the correct path to the file; C:\...etc.
});
此外,添加URL作为的src img标签按预期工作。
我也尝试使用addEventListener(“loadstart”)等附加inAppBrowser处理程序,但他们都没有触发。但是,当我尝试打开“http://www.google.com”时,事件发生,inAppBrowser弹出屏幕。
检查DOM我可以看到inAppBrowser元素被加入,但它似乎并不有一个源属性之后设置
<div class="inAppBrowserWrap">
<x-ms-webview style="border-width: 0px; width: 100%; height: 100%;"></x-ms-webview>
</div>
我已经看过诸如this one但没有其他问题无济于事。我已经验证了
一)InAppBrowser安装
B)deviceReady已经解雇
我也试图改变目标为“_self”(同样的问题)和“_SYSTEM”(弹出说你需要一个新的应用程序来打开一个msappdata类型的文件://),我的想法已经不多了。有人遇到过类似的问题吗?
是在@Jack奥尼尔的回答中提到的相同的博客文章,说:'Windows.System。 Launcher.LaunchFileAsync()可以被调用,以便shell确定正确的应用程序来处理文件。“这对我有效 – shadi