我有一个独特的问题脚本 -加载jQuery的,则执行依赖于它
我设计,创建小工具,用户就可以在自己的网页中嵌入(博客文章的Web应用程序,大多)。我希望他们只需要嵌入一行,所以我只是将该行作为include语句,以便将JavaScript从我的服务器上删除。
问题是,我正在使用jQuery构建小部件代码,我需要加载jQuery插件,因为我显然不知道我的用户是否有它可用。我想“这应该是非常简单的” ....
function includeJavaScript(jsFile) {
var script = document.createElement('script');
script.src = jsFile;
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
}
includeJavaScript('http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js');
jQuery();
所以,我追加了jQuery文件的头部,然后事后,试图运行一个jQuery功能。麻烦的是,这是行不通的!每次运行它,我都会遇到错误,说明未定义变量jQuery。我已经尝试了几件事情。我尝试将jQuery函数放入onLoad触发器中,以便在调用我的脚本之前加载整个页面(包括,大概是jQuery文件)。我试着把jQuery函数放在一个单独的文件中,并在加载jQuery lib文件后加载它。但我得到我想的东西简单的想法 - 我是新来的jQuery,所以如果我失去了一些东西很明显,我很抱歉......
编辑
OK,我试图通过所提供的建议digitalFresh,如下所示(使用Safari 5,如果有帮助),但我仍然得到相同的错误?
function test() {
jQuery()
}
var script = document.createElement("script");
script.type = "text/javascript";
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js';
script.onload = test(); //execute
document.body.appendChild(script);
编辑
OK,我终于得到它的工作,从布伦丹唐突的建议,通过将呼叫本身在 'onload事件' 的处理程序,就像这样:
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
addLoadEvent(function() {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js';
document.body.appendChild(script);
jQuery();
});
在这一点上,正如你所看到的,我甚至不需要把它放在“负载”上 - 它只是起作用。虽然我不得不承认,但我仍然不明白它为什么起作用,这使我困扰......
加载事件的人? – 2010-06-28 00:30:09