我想在myjs.js文件中包含jquery.js。我为此写了下面的代码。
var theNewScript=document.createElement("script");
theNewScript.type="text/javascript";
theNewScript.src="http://example.com/jquery.js";
document.getElementsByTagName("head")[0].appendChild(theNewScript);
$.get(myfile.php);
第5行显示“$ not defined”错误。我想包含jquery.js,然后想在myjs.js文件中调用$ .get()函数。我怎样才能做到这一点? 请帮帮我
答案 0 :(得分:11)
以编程方式在文档头中添加脚本标记并不一定意味着脚本将立即可用 。您应该等待浏览器下载该文件,解析并执行它。某些浏览器会为可以连接逻辑的脚本触发onload
事件。但这不是跨浏览器的解决方案。我宁愿“轮询”一个特定的符号变得可用,如下所示:
var theNewScript = document.createElement("script");
theNewScript.type = "text/javascript";
theNewScript.src = "http://example.com/jquery.js";
document.getElementsByTagName("head")[0].appendChild(theNewScript);
// jQuery MAY OR MAY NOT be loaded at this stage
var waitForLoad = function () {
if (typeof jQuery != "undefined") {
$.get("myfile.php");
} else {
window.setTimeout(waitForLoad, 1000);
}
};
window.setTimeout(waitForLoad, 1000);
答案 1 :(得分:4)
问题是脚本没有立即加载,脚本文件下载到页面并执行需要一些时间(如果是jQuery来定义$)。
我建议你使用HeadJS。那么你可以这样做:
head.js("/path/to/jQuery.js", function() {
$.get('myfile.php');
});
答案 2 :(得分:0)
简单回答,不。 jQuery文件 对入侵者非常敏感,所以不要 尝试。将其他文件加入jQuery 文件经常会导致JS出错 控制台,PLUS jQuery没有初始化 直到文件加载到main 文档。
抱歉,抓一点。不知道你在做什么。
试试这个:
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'http://domain.com/jquery.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(s);
答案 3 :(得分:0)
之前我使用过此代码,并且有效:
var t=document;
var o=t.createElement('script');
o=t.standardCreateElement('script');
o.setAttribute('type','text/javascript');
o.setAttribute('src','http://www.example.com/js/jquery-1.3.2.js');
t.lastChild.firstChild.appendChild(o);