1

以下のjavascriptを使用して、メール返信ウィンドウを開こうとしています:

window.location='mailto:'+to+'?subject='+subject+'&cc='+cc+'&body='+body;  

問題は、body 変数にエラー メッセージを表示する文字 (引用符、特殊文字など) があることです。静的で単純なボディ文字列を指定すると、同じコードが機能します。

Firefoxのエラーは次のようなものです

エラー: キャッチされない例外: [Exception... "Failure" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: (url) :: send_mail :: line 49" data: no]"

本文内容:「XXXXX」

みんなが理由を見つけました... 1209文字を超える送信を許可していません。これを新しい質問として投稿します。

4

2 に答える 2

2

クエリ文字列のパラメーターに文字列を渡し、その文字列に URL で他の意味を持つ文字が含まれている可能性がある場合は、次のコマンドを使用してそれらをエスケープする必要があります。

escape(stringOfTextToEscape);

したがって、window.location は次のようになります。

window.location='mailto:'+to+'?subject='+subject+'&cc='+cc+'&body='+escape(body) 

これにより、すべての特殊文字が Unicode エスケープ シーケンスに変換され、URL に渡しても安全になります。

詳細については、escape、encodeURI、encodeURIComponent に関するこの FAQを参照してください。

于 2012-05-24T07:06:13.873 に答える
1

これを試して:

window.location='mailto:'+to+'?subject='+subject+'&cc='+cc+'&body='+escape(body); 

escape()関数は特殊文字をエンコードしますが、例外は * @ - _ + です。/

したがってescape("How are you? Come on!");、次のような結果が得られます。How%20are%20you%3F%20Come%20On%21

于 2012-05-24T07:06:35.730 に答える