Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Javascript加载Javascript引用并立即从控制台调用它_Javascript_Jquery_Firefox_Google Chrome - Fatal编程技术网

通过Javascript加载Javascript引用并立即从控制台调用它

通过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 但是,如果我

我有以下代码将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功能会起作用,但这并不适用于所有浏览器,所以要注意你的里程数会有所不同。