在IE中动态加载jquery

时间:2012-06-29 15:16:36

标签: javascript jquery load

所以我想加载jquery作为备份,如果CSS转换不起作用。使用现代化器,它工作正常。

如果我将jquery包含在像

这样的标题中,则jquery可以正常工作
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

但如果我尝试像

那样动态添加它,请不要这样做
  var fileref=document.createElement('script')
  fileref.setAttribute("type","text/javascript")
  fileref.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js")

    var jqueryscript = document.createElement("script");
jqueryscript.type = "text/css";
jqueryscript.setAttribute("http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js");
document.body.appendChild(jqueryscript);

5 个答案:

答案 0 :(得分:2)

在您的第二个片段中,您应该使用:

jqueryscript.type = "text/javascript";
jqueryscript.src = "http://ajax.blahblahblah";

jqueryscript.type = "text/css";
jqueryscript.setAttribute("http://ajax.blahblahblah")

.setAttribute()接受两个参数 - 第一个是属性名称,第二个是值。传递一个值无效(我想)......

答案 1 :(得分:1)

对于第一个示例,您必须将脚本标记添加到文档中。不这样做会在内存中创建元素,但浏览器无需下载文件:

var fileref = document.createElement("script");
fileref.setAttribute("type", "text/javascript");
fileref.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js");
document.getElementsByTagName("head")[0].appendChild(fileref);

请注意,使用el.setAttribute("src", ...)el.src =并没有真正的区别(discussed here)。

如果以这种方式加载JavaScript文件,您必须意识到在加载文件之前jQuery$变量将不可用。您必须在函数中包含使用jQuery的代码,并在加载脚本后调用函数。一个简单的例子:

function onScriptLoaded() {
    alert(jQuery.fn.jquery); // alerts jQuery version number
}
var fileref = document.createElement("script");
fileref.setAttribute("type", "text/javascript");
fileref.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js");
fileref.onload = onScriptLoaded;
fileref.onreadystatechange = function () {
    if (this.readyState == 'complete') {
        onScriptLoaded();
    }
}
document.getElementsByTagName("head")[0].appendChild(fileref);

答案 2 :(得分:1)

这两个片段都不正确,试试这个:

var headID = document.getElementsByTagName("head")[0];  
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js';
headID.appendChild(newScript);

答案 3 :(得分:0)

问题可能是在执行之前你不能使用jQuery,在这种情况下你必须监听一个事件,并且只在该事件运行之后运行你的jQuery代码。

script.onload = script.onreadystatechange = function() {
    // run your jquery dependent code
    // only after this function ran
}

答案 4 :(得分:0)

尝试

 document.write('<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"><\/script>');