[英]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.com和http://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.