我正在尝试编写一个bookmarklet,其中涉及动态添加两个脚本标记,一个用于jQuery,另一个用于用jQuery编写的js脚本。我遇到的问题是,即使我首先添加jQuery脚本,也无法读取js脚本,因为浏览器说jQuery未定义。我知道错误是jQuery仍在加载,因为浏览器添加了我的js脚本,因此浏览器在执行js脚本时无法识别js脚本中的jQuery。是否有延迟添加js脚本标记,直到jQuery完全加载?
谢谢!
答案 0 :(得分:2)
您的脚本如何?
您应该将您在脚本中执行的所有操作封装在函数中,然后从文档中调用该函数。
例如,将所有内容放入函数myJqueryFunction()
中,然后使用:
$(document).ready(function(){
myJqueryFunction();
});
这使得您的代码只能在jQuery完全加载后执行。
或者,您应该能够使用Ajax执行脚本,但请记住,您的脚本必须从与文档相同的域提供,否则它将无法访问DOM。
$(document).ready(function(){
$.ajax("url to your script", {dataType:"script"});
});
答案 1 :(得分:1)
大多数Javascript程序员最终做的第一件事就是在他们的>程序中添加一些代码,类似于:
window.onload = function(){ alert("welcome"); }
其中包含您希望在加载页面时运行的代码。但问题是,在完成所有图像下载(包括横幅广告)之前,Javascript代码不会运行。首先使用window.onload的原因是当你第一次尝试运行你的代码时,HTML'文档'还没有完成加载。
希望这些信息有助于 - 从JQuery tutorial推出!
答案 2 :(得分:0)
您可以使用LABjs
之类的脚本加载器:http://labjs.com/。它支持使用wait
延迟其他脚本。
$LAB
.script("jquery.js")
.wait()
.script("script.js");