これは本当に奇妙な問題です。私はWebサイトの1つでRecaptchaを使用しようとしています。これは、IE6を除くテスト済みのすべてのブラウザーで機能します。
私はグーグルのjsを参照しました: http ://www.google.com/recaptcha/api/challenge? k = the_keyそしてそれはfiddler2と'onreadystatechange'イベント(readystate =='を持つ)に従ってロードされますロード済み')
通常のワークフローでは、読み込まれたJSが解析され、別のjsがリクエストされてから、画像がgoogleから読み込まれます。私の問題は、最初にロードされたJSファイル(以下のようなコンテンツ)です。
var RecaptchaState = {
site : 'xxxxxxxxxxxx',
challenge : 'xxxxxxxxxxxxxxxxxxxxxxxxx',
is_incorrect : false,
programming_error : '',
error_message : '',
server : 'http://www.google.com/recaptcha/api/',
timeout : 18000
};
document.write('<scr'+'ipt type="text/javascript" s'+'rc="' + RecaptchaState.server + 'js/recaptcha.js"></scr'+'ipt>');
解析されません。まず、次のJSテスト:
typeof RecaptchaState == 'undefined'
第二に、(fiddler2によると)2番目のスクリプト要求はありません。reCAPTCHAイメージは言うまでもありません...
スクリプトタグは、recaptchaマークアップの後に本文内に配置され、JSを動的にロードしようとしました。
function GetJavaScript(url, callback) {
var script = document.createElement('script');
script.src = url;
var head = document.getElementsByTagName('head')[0];
var done = false;
// Attach handlers for all browsers
script.onload = script.onreadystatechange = function () {
if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {
done = true;
callback();
// remove the hanlder
script.onload = script.onreadystatechange = null;
head.removeChild(script);
}
};
head.appendChild(script);
}
これは同じ動作をします...私を最も混乱させるのは、この問題は、ページが別のページからリダイレクトされた場合にのみ発生することがあります。(新しいブラウザウィンドウでURLを直接開くか、ページの更新は常に正常に機能しますが、JavaScriptを使用したページの更新は機能しません...)
助けてください、アドバイスやアイデアをいただければ幸いです...