通过Javascript加载Javascript引用并立即从控制台调用它
我有以下代码将jQuery加载到某个网站的文档中通过Javascript加载Javascript引用并立即从控制台调用它,javascript,jquery,firefox,google-chrome,Javascript,Jquery,Firefox,Google Chrome,我有以下代码将jQuery加载到某个网站的文档中 j=document.createElement("SCRIPT"); j.src="http://code.jquery.com/jquery-latest.pack.js"; document.getElementsByTagName("HEAD")[0].appendChild(j); var J = jQuery.noConflict(); 如果我从控制台将其作为块运行,则 ReferenceError:未定义jQuery 但是,如果我
j=document.createElement("SCRIPT");
j.src="http://code.jquery.com/jquery-latest.pack.js";
document.getElementsByTagName("HEAD")[0].appendChild(j);
var J = jQuery.noConflict();
如果我从控制台将其作为块运行,则
ReferenceError:未定义jQuery
但是,如果我手动输入每一行,最后一行运行正常,我不会得到异常
是否有我遗漏的东西--可能DOM还需要几毫秒来完成对上一个命令的处理
不管问题是什么,有人知道如何解决这种情况吗
这在chrome和firefox中分别使用dev工具和firebug时发生。尝试用以下内容替换最后一行:
j=document.createElement("SCRIPT");
j.onload = function(){
window.J = jQuery.noConflict();
};
j.src="http://code.jquery.com/jquery-latest.pack.js";
document.body.appendChild(j);
function checkJQuery() {
if (typeof(jQuery) == 'undefined') {
setTimeout('checkJQuery', 50);
}
else {
J = jQuery.noConflict();
J(function() {
// Document ready stuff here
});
}
}
checkJQuery();
尝试用以下内容替换最后一行:
function checkJQuery() {
if (typeof(jQuery) == 'undefined') {
setTimeout('checkJQuery', 50);
}
else {
J = jQuery.noConflict();
J(function() {
// Document ready stuff here
});
}
}
checkJQuery();
看起来dzejkej在比赛中击败了我。应得的荣誉!jQuery可能永远不会加载,例如,如果jQuery.com由于某种原因关闭了。Esalija的
onload
解决方案是一条可行之路。你也可以连接到onerror
@Coronus我删除了我的答案,因为Esalija的解决方案要好得多:)。看起来dzejkej在设置超时时击败了我。应得的荣誉!jQuery可能永远不会加载,例如,如果jQuery.com由于某种原因关闭了。Esalija的onload
解决方案是一条可行之路。您还可以连接到onerror
@Coronus我删除了我的答案,因为Esalija的解决方案要好得多:)。如果您不希望jQuery作为jQuery
变量进行访问,您可以改为执行J=jQuery.noConflict(true)代码>。在Esalija接受更改之前,做一个好人,将脚本附加到document.head,而不是document.body!如果您不希望jQuery作为jQuery
变量进行访问,则需要执行J=jQuery.noConflict(true)代码>。在Esalija接受更改之前,做一个好人,将脚本附加到document.head,而不是document.body!DOM处理命令并不需要太多时间。您只是在DOM上推送了一个脚本标记,但由于它是一个外部引用,所以它将被下载并异步运行。通过运行下一个命令,您可以假定下载和脚本解释已经完成。很可能不是,因此出现了未定义的错误。既然您已经用“google chrome”标记了它,我会说onload功能可以工作,但这并不适用于每个浏览器,所以请注意您的里程数会有所不同。DOM处理命令所需的时间并不多。您只是在DOM上推送了一个脚本标记,但由于它是一个外部引用,所以它将被下载并异步运行。通过运行下一个命令,您可以假定下载和脚本解释已经完成。很可能不是,因此出现了未定义的错误。既然你用“google chrome”标记了它,我会说onload功能会起作用,但这并不适用于所有浏览器,所以要注意你的里程数会有所不同。