0

因此,如果 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);
4

5 回答 5

2

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

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

不是

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

.setAttribute() 有两个参数——第一个是属性名,第二个是值。传递一个值是无效的(我想)......

于 2012-06-29T15:19:27.777 回答
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", ...)andel.src =并没有真正的区别(讨论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);
于 2012-06-29T15:23:42.437 回答
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);
于 2012-06-29T15:23:44.133 回答
0

尝试

 document.write('<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"><\/script>');
于 2012-06-29T15:27:16.497 回答
0

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

script.onload = script.onreadystatechange = function() {
    // run your jquery dependent code
    // only after this function ran
}
于 2012-06-29T15:19:14.810 回答