1

私はPhoneGapを使ってアプリケーションを作ったので(HTML、JavaScript、CSSで書いています)、このアプリでは以下のような複数の "href"CSPと<allow-intent>にもかかわらずHrefが機能しない

<a href="mailto:[email protected]"> 
[email protected] </a><br /> 

Website: <a href="http://www.apt-alu-products.com">www.apt-alu-products.com</a></p> 

私はAndroid上でAPKを実行した場合、それがうまくいくことを保証するために、私のHTML文書のすべての頭 『の部分、いくつかの「のContent-セキュリティポリシーライン』を追加した。このCSPは、このリクに見えます::私は「ウィジェット」の部分の間での私のconfig.xmlファイルに次の行を追加しましたその上で

<meta http-equiv="Content-Security-Policy" 
     content="default-src *; 
        style-src * 'self' 'unsafe-inline' 'unsafe-eval'; 
        script-src * 'self' 'unsafe-inline' 'unsafe-eval';"> 
<allow-intent href="http://*/" /> 
<allow-intent href="https://*/*" /> 
<allow-intent href="mailto:*" /> 
<allow-navigation href="*" /> 
<allow-intent href="*" /> 
<access origin="*" /> 

(私はこれらの行は、セキュリティ上の理由から推奨されていないが、これらは私の最後の手段だった知っている) 私はそれからAPKを構築する際にアルのにもかかわらず、これらの線はリンクがまだ動作しませんし、私のAndroid搭載の携帯電話でそれを実行します。

この件についてはインターネット上で多くの記事がありますが、私が読んだものはどれも問題に取り組むことができませんでした。

答えて

0

inappbrowserプラグインを使わずに、これらのリンクを直接アプリのHTMLに追加することはできません。 httpリンクは実際にWebviewにコンテンツを読み込み、アプリコードを置き換えます。

mailtoリンクでデフォルトのメールクライアントを起動し、httpリンクをシステムブラウザで開くことを前提としていますか?次の操作を行い、これを仮定:

まず、プロジェクトにinappbrowserプラグインを追加します。

cordova plugin add cordova-plugin-inappbrowser 

その後window.openでリンクを開くにはinappbrowserプラグインを使用するには、いくつかのコードではなく、開口部のデフォルトの動作を追加(以下はjQueryを使用しています):

$(document).on('click', 'a[href^=http], a[href^=mailto]', function(e){ 
    e.preventDefault(); // prevent Webview from following link 
    window.open($(this).attr('href'), '_system'); // Open with inappbrowser 
}); 
+0

本当にありがとう、私は本当にプラグインをダウンロードしなければなりませんでした。私はこれをやったことがないので、それ以上の研究が必要でした。しかし、私は[cordova-plugin-whitelist](https://www.npmjs.com/package/cordova-plugin-whitelist)をインストールすることを決めました。なぜなら、私はクエリ部分を使う必要がないからです。これは正常に動作します。 – Joep

関連する問題