3

IE6 とまったく同じように、他のブラウザーでも Web サイトを機能させる必要があります。現在のコードの一部は次のようになります。

<script>
function myFunc(){
 location.href="mailto:test@test.com&body=Hello!";
 location.href="newPage.html";
}
</script>
<body onload="myFunc();">
</body>

IE では、これにより、指定されたメッセージが準備された状態でメール クライアントが開き、ブラウザが newPage.html にリダイレクトされます。ただし、他のブラウザは newPage.html にのみリダイレクトします。この効果 (メール クライアントを開いてからページ リダイレクトを行う) をブラウザ間で一貫して実現するにはどうすればよいですか?
注として、メタリフレッシュを使用してこれを達成しようとしましたが、失敗しました。

4

5 に答える 5

7

次のようなものを使用してみてください:

<a href="mailto:mail@domain.com" onclick="window.location.href='np.html'">send</a>

オンロードの代わりに。

于 2010-02-03T15:14:34.390 に答える
6

プロパティを変更するhrefと場所の読み込みが開始され、後で再度変更すると以前のナビゲーションがキャンセルされます。

IE6 は、プロパティを設定するとすぐに電子メール クライアントを起動し、JavaScript の実行を続行するようです。他のブラウザーでは動作が異なるようで、2 番目の場所の読み込みで最初の読み込みがキャンセルされます。

タイマーを使用してChromeでこれを回避することができました。他のブラウザーでも機能する可能性があります。

function myFunc(){ 
  location.href="mailto:test@test.com&body=Hello!"; 
  window.setTimeout(function () { location.href="newPage.html" }, 0); 
} 
于 2010-02-03T15:15:37.193 に答える
4

全体として、セキュリティ設定が邪魔になると思う傾向があり、クリックするための退屈な昔ながらのmailtoリンクをユーザーに提供することをお勧めします. (編集: おそらく、Mic が提案するようなセットアップの 1 つです。)

とはいえ、遅延を導入すると、物事がより信頼できるようになるのではないかと思います。

function myFunc() {
    location.href = "mailto:test@test.com&body=Hello!";
    setTimeout(function() {
        location.href = "newPage.html";
    }, 500);
}
于 2010-02-03T15:15:04.917 に答える
1

mailto:これは、クライアントのブラウザが最初にリンク用に開く電子メールクライアントを知っている場合にのみ機能します。ユーザーがブラウザに登録されていないWebベースのクライアントを使用している場合、何も起こりません。

また、セキュリティ設定によりmailto:、プログラムでリンクを開くことができなくなったり、将来的にリンクが開かなくなったりする可能性があります。

私はこれがどちらの方法でも機能することに依存することはなく、便利なオプションの便利な機能としてのみ機能します。

とにかく、あなたの質問に答えるために、2つの呼び出しの間にタイムアウトを設定してみてください。たぶん、場所の更新はブラウザが追いつくには速すぎます。

location.href="mailto:test@test.com&body=Hello!";
setTimeout(function(){ location.href = 'newPage.html' },  500);
于 2010-02-03T15:11:07.107 に答える