Это действительно странная проблема, я пытаюсь использовать Recaptcha на одном из веб-сайтов, и она работает для всех протестированных браузеров, кроме IE6.
Я сделал ссылку на Google's 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), не говоря уже об образе recaptcha ...
Тег script ставится внутри тела после разметки 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 не работает ...)
Пожалуйста, помогите, любые советы и / или идеи будут оценены ...