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

时间:2013-09-25 23:30:40

标签: cordova ibm-mobilefirst blackberry-10

我在Worklight 5中使用过它,但我似乎无法在V6中使用它。

我正在尝试在BlackBerry 10上的Worklight应用程序中使用Cordova InAppBrowser。我的代码非常简单:

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

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

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

我的应用的config.xml包括:

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

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

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

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

3 个答案:

答案 0 :(得分:3)

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

如果我在config.xml中添加我的特定域作为访问元素,则window.open()会突然起作用。看blackberry documentation,我想我明白为什么

  

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

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

在任何情况下,只要我在config.xml中专门指定所有域,我就可以使window.open()工作。我还没有找到成功将所有内容列入白名单的方法。我试图删除所有内容,但是:

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

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

但是应用程序无法连接到Worklight服务器(不太确定原因)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

只需添加:

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

到你的config.xml,你应该好好去。