[英]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.