这是一个非常奇怪的问题,我正在尝试在其中一个网站上使用 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),更不用说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);
}
这给出了相同的行为......最让我困惑的是:仅当页面从另一个页面重定向时才会偶尔出现此问题。(直接在新的浏览器窗口中打开网址或刷新页面总是可以正常工作,但是使用 JavaScript 刷新页面不起作用......)
请帮助,任何建议和/或想法将不胜感激......