web-dev-qa-db-ja.com

mailtoリンクがフレーム内で機能しないchrome(https経由)

ページにmailtoリンクがあります。ページが単独で読み込まれると、期待どおりに動作します。

ただし、Chrome=のフレームセットを介してページが読み込まれると、何も起こりません。開発者ツールが読み込まれると、エラー"[blocked] The page at https://mysite.com ran insecure content from mailto:..." 表示されています。

どうすればこれを修正/回避できますか?

28
Dale K

最近、iframeでこの問題も発生しました。上部フレームの使用は機能し、すべての主要なブラウザと互換性があるはずです。

window.top.location = 'mailto:...';
28
Jason Hardies

はい、「トップ」を使用するのがコツですが、HTMLだけでそれを実行できます。

<a target="_top" href="mailto:...">email</a>
28
kendsnyder

これが私が最終的に解決したソリューションです:Chrome、Firefox、IE6、IE7、IE8、IE9、IE10、IE11、Safariでテスト済み

$("a[href^='mailto:']").on("click",function() {
    window.top.location = $(this).prop("href");
    return false;
});
6
Davin

target = "_ top"または "_blank"または "_parent"を追加

<a target="_top" href="mailto:[email protected]">email1</a>

<a target="_top" href="mailto:[email protected]">email2</a>

2
Wynston

おそらく、親フレームセットがhttpsですが、Chrome=はmailtoリンクを安全でないものとして扱うようになりました。

経由でmailtoリンクをトリガーすると、同様の問題が発生しました

window.location = 'mailto:...'

これに変更することで回避できました。

window.open( 'mailto:...')
1
Hugh

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()メソッドを使用できます。

1
mikikg

これも機能し、Facebookでウィンドウを閉じません。

<a href="mailto:..." target="_blank">...</a>

または

$("a[href^='mailto:']").attr('target','_blank');
1