文档准备好之前的Javascript onload事件和其他事件

时间:2012-06-19 12:15:12

标签: javascript jquery html

if (typeof $ == "undefined"){

console.log("$ is undefined. Adding javascript element to the document");
jQs = document.createElement("script");
jQs.type = 'text/javascript';
jQs.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(jQs, s);

// Run script once jQuery is loaded
    console.log(" startScript() Start");
    jQs.onload = startScript;

}

我有上面的脚本,如果$未定义,它会添加一个指向jquery的脚本标记。我尝试在文档开始之前插入标记并执行startScript函数。但我认为发生的是body.onload不会足够快地触发startScript ..这会阻止它的执行。有一个事件会在jquery脚本标记/文档准备就绪后立即触发startScript吗?

我认为答案在于每当jquery标签准备就绪并且文档准备就绪时执行startscript ..但我不知道如何实现效果..

请注意,将代码放在$(document).ready()中是一个无关紧要的解决方案,因为如果脚本中没有包含jquery文件,则$ is undefined

另请注意,我不想在jquery标签onload事件上执行onload函数,因为它可能意味着该函数被多次触发

1 个答案:

答案 0 :(得分:4)

  function init() {
    if (typeof $ == "undefined"){

    console.log("$ is undefined. Adding javascript element to the document");
    jQs = document.createElement("script");
    jQs.type = 'text/javascript';
    jQs.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(jQs, s);

    // Run script once jQuery is loaded
        console.log(" startScript() Start");
        jQs.onload = startScript;

    }
}
window.onload = init;