有没有办法检测外部JavaScript文件是否已完全加载?

时间:2012-05-07 02:45:24

标签: javascript

我有一个使用 reCAPTCHA 来过滤机器人的网络表单。该表单有一个<script>标记,用于在<iframe>中加载验证码质询。如果此脚本无法加载,则不会显示验证码质询,也无法发送帖子。

有什么方法可以检测脚本是否已加载,以便我可以关闭此功能吗?

3 个答案:

答案 0 :(得分:5)

load事件附加到指向reCAPTCHA的script元素。

var script = document.createElement("script");

script.addEventListener("load", function() {
   // Script has loaded.
});

script.src = "/path/to/recaptcha.js";

document.body.appendChild(script);

答案 1 :(得分:2)

您可能会找到一种方法来进行检测,但我不推荐它,因为它会破坏验证码的目的。计算机/机器人很容易使脚本无法加载。主机文件条目可以解决问题。

也可以制作一个脚本,只对失败的加载案例执行处理,从而绕过验证码。

答案 2 :(得分:1)

script.addEventListener不适用于IE8和IE7。为此你需要

  if (!script.addEventListener) {
        script.attachEvent("onload", function(){
        // script has loaded in IE 7 and 8 as well.
});
    }
    else
    {
    script.addEventListener("load", function() {
       // Script has loaded.
    });
}