繁体   English   中英

IBM Worklight 6.0-在BlackBerry 10中window.open()失败

[英]IBM Worklight 6.0 - window.open() fails in BlackBerry 10

我曾在Worklight 5中使用此功能,但似乎无法在V6中使用它。

我试图在BlackBerry 10上的Worklight应用程序中使用Cordova InAppBrowser。我的代码很简单:

window.open(link, "_blank", "location=no");

这可以在Android和iOS上运行,但是当II在Blackberry 10模拟器上运行时,控制台日志中出现以下错误:

POST http://localhost:8472/org.apache.cordova/isWhitelisted 404 (OK) 

我的应用程序的config.xml包括:

<access subdomains="true" uri="*" />

因此应将所有链接列入白名单,但404似乎是用于API调用以检查链接是否被列入白名单,而不是用于打开链接的调用。

如果我不愿意使用cordova.js从open()的实现中删除白名单检查,则InAppBrowser突然可以正常工作,但是每次构建应用程序时该文件都会被覆盖,因此自定义它不是一种选择。

我是否缺少进行这项工作所需的一些配置?

科尔多瓦似乎从2.0更改为2.3。 在Worklight V5中,通配符白名单访问有效,但在BB10的V6中,仅特定域可以被列入白名单。

如果我将特定域添加为config.xml中的访问元素,则window.open()会突然起作用。 黑莓文档 ,我想我为什么

如果指定多个元素,则使用最具体的定义。 例如,如果您使用http://somedomain.comhttp://specific.somedomain.com ,则使用第一个定义(及其下定义的任何功能)的元素将被忽略。

但这让我想知道通配符访问在Worklight V5中是如何工作的(并且确实如此)。该规则应适用于V5项目,并且我在Cordova文档中看不到任何更改,但是由于某些原因,通配符白名单访问有效在那里,但在Worklight V6中却没有。

无论如何,只要我在config.xml中专门指定所有域,就可以使window.open()正常工作。 我还没有找到一种成功将所有内容列入白名单的方法。 我尝试删除所有内容,但:

<access subdomains="true" uri="*" />

(这与我的纯Cordova测试应用程序中config.xml中的内容匹配)

但是随后该应用程序无法连接到Worklight服务器(不太清楚为什么)

Worklight 6.0使用Cordova v2.6,这可能是因为在window.open(现在实际上是InAppBrowser)方面,BlackBerry 10的支持已关闭。

根据Cordova文档查看是否可以使用它:
http://cordova.apache.org/docs/en/2.6.0/cordova_inappbrowser_inappbrowser.md.html

我意识到这个问题已经得到解答,但是您可以添加一个config.xml设置,该设置将允许访问任何域,如此处所述

只需添加:

<preference name="WebSecurity" value="disable"/>

转到config.xml,您应该会很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM