ページにmailtoリンクがあります。ページが単独で読み込まれると、期待どおりに動作します。
ただし、Chrome=のフレームセットを介してページが読み込まれると、何も起こりません。開発者ツールが読み込まれると、エラー"[blocked] The page at https://mysite.com ran insecure content from mailto:..."
表示されています。
どうすればこれを修正/回避できますか?
最近、iframeでこの問題も発生しました。上部フレームの使用は機能し、すべての主要なブラウザと互換性があるはずです。
window.top.location = 'mailto:...';
はい、「トップ」を使用するのがコツですが、HTMLだけでそれを実行できます。
<a target="_top" href="mailto:...">email</a>
これが私が最終的に解決したソリューションです:Chrome、Firefox、IE6、IE7、IE8、IE9、IE10、IE11、Safariでテスト済み
$("a[href^='mailto:']").on("click",function() {
window.top.location = $(this).prop("href");
return false;
});
target = "_ top"または "_blank"または "_parent"を追加
<a target="_top" href="mailto:[email protected]">email1</a>
<a target="_top" href="mailto:[email protected]">email2</a>
おそらく、親フレームセットがhttpsですが、Chrome=はmailtoリンクを安全でないものとして扱うようになりました。
経由でmailtoリンクをトリガーすると、同様の問題が発生しました
window.location = 'mailto:...'
これに変更することで回避できました。
window.open( 'mailto:...')
Chromeバグが修正されるまで、これは私の回避策です:
$.browser.chrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase());
if($.browser.chrome){
myWindow=window.open("mailto:"+eml+"?subject="+msb,'','width=50,height=50');
myWindow.close();
} else {
window.location.href = "mailto:"+eml+"?subject="+msb;
}
Chromeの場合、window.open()メソッドでインスタンスを作成し、そのインスタンスをすぐに閉じます。小さなウィンドウは短期間「点滅」しますが、仕事はします。 「ダーティ」な解決策ですが、Chromeのバグと同じくらいです。
他のブラウザではwindow.location()メソッドを使用できます。
これも機能し、Facebookでウィンドウを閉じません。
<a href="mailto:..." target="_blank">...</a>
または
$("a[href^='mailto:']").attr('target','_blank');