IBM Worklight 6.0 - BlackBerry 10 中的 window.open() 失败
Posted
技术标签:
【中文标题】IBM Worklight 6.0 - BlackBerry 10 中的 window.open() 失败【英文标题】:IBM Worklight 6.0 - window.open() fails in BlackBerry 10 【发布时间】:2013-09-25 23:30:40 【问题描述】:我在 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 突然工作正常,但是每次构建应用程序时该文件都会被覆盖,因此无法自定义它。
我是否缺少一些使这项工作所需的配置?
【问题讨论】:
【参考方案1】:Cordova 似乎从 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="*" />
(这与我的纯科尔多瓦测试应用程序中的 config.xml 中的内容相匹配)
但随后应用程序无法连接到 Worklight 服务器(不太清楚为什么)
【讨论】:
我在这里遇到了同样的问题。有关解决方案或解决方法的任何更新? 我唯一的解决方法是将所有需要的域显式添加到白名单中。【参考方案2】: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
【讨论】:
文档非常简单。 Cordova 2.6 中唯一支持 BB10 的是 window.open()。没有其他 BB 特定的注释。我拼凑了一个纯 Cordova 2.6 BB10 应用程序,window.open() 运行良好。【参考方案3】:我意识到这个问题已经得到解答,但是您可以添加一个 config.xml 设置,该设置将允许访问任何域,如 here 所记录的那样。
只需添加:
<preference name="WebSecurity" value="disable"/>
到你的 config.xml,你应该很高兴。
【讨论】:
以上是关于IBM Worklight 6.0 - BlackBerry 10 中的 window.open() 失败的主要内容,如果未能解决你的问题,请参考以下文章
IBM Worklight 6.0 - 访问 Worklight Server 时出错
IBM Worklight 6.0 - Worklight Starter Dojo 示例损坏?
IBM Worklight 6.0 - 如何将 Worklight 应用程序部署到 Worklight Server?
IBM Worklight 6.0 - 无法访问 Worklight 服务器