0

ajaxを介してphpページを呼び出すボタンが必要です。mailto リンクを含むクライアントのメールを開くためのボタンが必要です。PHP ページは、資格情報を安全なサイトに渡す暗号化された文字列で構成される電子メールを生成します。

基本的に、これらのことをこの順序で行う必要があります。

ボタンをクリックします。ajax 呼び出しを行います。href に "mailto:subject=your_secret_link&body= http://securesite.com?authcode=encrytpedstuff " を入力します。 クライアントの電子メールを開きます。

私はこれを試しました: html 部分:

<span id="mailframe"><a href=# id="myemail"><input name="Request Signing via Email"  value="Request Signing via Email" type="button" class="redButton" onclick="sendEmail();"/></a></span>

JavaScript部分

function sendEmail() {
    var hash=document.getElementById('hash').value;
    var obj=document.getElementById('mailframe');
    var email=document.getElementById('myemail');
    var mailxml = new XMLHttpRequest;

    mailxml.onreadystatechange = function() {

        if ((mailxml.readyState == 4) && ((mailxml.status == 302)|| (mailxml.status == 200))) {
            email.href=mailxml.responseText;
        }
    }

    mailxml.open("GET",'/secure/literature/generateid.php?hash='+hash+'&docid=<?=$docid?>' );
    mailxml.send();
}

IE では動作しますが、Firefox では動作しません。何か案は?

4

1 に答える 1

0

次のようなものが必要だと思います(FireFox 24で動作します):

    <script type="text/javascript">
        function sendEmail() {
            var hash=document.getElementById('hash').value;

            var email=document.getElementById('myemail');
            var mailxml = new XMLHttpRequest;

            mailxml.onreadystatechange = function() {
                if (mailxml.readyState == 4 && ((mailxml.status == 302) || (mailxml.status == 200))) {
                    window.location.href = mailxml.responseText;
                }
            };

            mailxml.open("GET", "/your/long/url?with=parameters", true);
            mailxml.send();}
    </script>

    <div>
        <input type="button" onclick="sendEmail()" value="Send E-mail"/>
        <input type="text" name="hash" id="hash" value="hashValue" />
        <a href="#" id="myemail">E-mail link</a>
    </div>

また、コード内のクロスブラウザー XmlHttpRequestとブレースを取得する最も簡単な方法も確認してください。

于 2013-09-23T18:28:53.603 に答える