我在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突然正常工作,但每次构建应用程序时该文件都会被覆盖,因此自定义它不是一种选择。
我是否缺少使这项工作所需的一些配置?
答案 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,你应该好好去。