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 を使用します。window.open (実際には InAppBrowser になっています) に関する BlackBerry 10 のサポートは多少オフになっている可能性があります。

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 に答える