2

Google の re-captcha を実装し、Chrome で完全に動作させています (AJAX API)。IEが問題です...

localhost : //myapp/index.htmlとForgot your passwordへのリンクがあります。このリンクがクリックされると、jQuery クリック ハンドラーが呼び出されます。ハンドラー関数は div のコンテンツを変更し、Recaptcha.create(...)も呼び出します。ウィジェットは正しく表示され、Chrome では期待どおりに動作しますが、IE ではリロード アイコンまたはサウンド ボタンをクリックすると、ページ全体がリロードされます。

手動で Recaptcha.reload() を呼び出すと、問題なくリロードされますか?!

私が持っているHTMLは次のとおりです。

<div id="recaptcha" style="width:120px"></div>

[...]

<script type="text/javascript" src="https://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>

[...]

//In a jquery click handler I call
Recaptcha.create("6LxxxxxxxxxxxxxxxxxxxxxxIrpV5RO8P",
                    "recaptcha",
                    {
                        theme:'white',
                        callback: Recaptcha.focus_response_field
                    }
            );

これまでのところとても良いです... Captcha はすべてのブラウザーで適切に読み込まれます。IE8 および 9 では、リロードおよび mp3 バージョンのウィジェット ボタンをクリックすると、ページ全体がリロードされます

httphttpsに、またはその逆に変更しようとしましたが、まだ運がありません...

4

1 に答える 1

2

Recaptcha.create();呼び出されると、Google の re-captcha RELOAD と IMAGE/TEXT ボタンのコードは次のようになります。

 <a href="javascript:Recaptcha.reload();">

ボタンが押されたときにIEのアプリでページがリロードされる理由がわかりません.Googleが提供するデモでは非同期リクエストを送信します...

href属性の javascript を変更できないため、jQuery にonclickハンドラーを追加する必要がありました$(document).ready();

私の解決策はこれでした:

$("#recaptcha).on("click", "id_of_the_reload_button", function(e){
    e.preventDEfault();
    Recaptcha.reload();
});

基本的に、Google が提供するアンカーの自然な動作をブロックし、自分で reload() 関数を呼び出しました。そもそも自分のページがリロードされた原因を特定できなかった

于 2012-12-21T23:56:13.757 に答える