2

我在 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 突然工作正常,但是每次构建应用程序时该文件都会被覆盖,因此无法自定义它。

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

4

3 回答 3

3

Cordova 似乎从 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="*" />

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

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

于 2013-10-01T16:27:54.493 回答
0

Worklight 6.0 使用 Cordova v2.6,这可能是因为 BlackBerry 10 对 window.open(现在实际上是 InAppBrowser)的支持有些偏离。

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

于 2013-10-01T04:40:22.610 回答
0

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

只需添加:

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

到您的 config.xml,您应该一切顺利。

于 2013-11-24T00:55:15.027 回答