Chrome控制台行为

时间:2016-09-22 07:46:45

标签: javascript jquery google-chrome google-chrome-devtools

我通过控制台jquery注入:

var jq = document.createElement('script');

jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js";

document.getElementsByTagName('head')[0].appendChild(jq);

jQuery.noConflict();

然后我使用了一些jquery命令

$('.first').position()
document.elementFromPoint(xPosition, yPosition).click();

在浏览器重新加载中模拟点击页面后。并且$('.first')总是返回[];但是在页面上有很多带有'first'类的标签。好像控制台在等待更新?或者是什么?

1 个答案:

答案 0 :(得分:0)

appendChild正在将一个脚本元素加载到DOM中,然后该脚本标记将文件集下载到其src属性。但这次下载需要时间。它是异步的。

var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);

因此,当您在javascript中尝试立即访问jQuery时,该文件尚未下载。想象一下,该文件需要一个小时才能下载。在使用该代码之前,您需要等待通知该文件已完成下载。有很多方法可以考虑这个问题,例如使用间隔来检查全局变量是否存在,但我认为最简单的方法就是使用onload事件。

var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js";
jq.onload = function(){
  //do stuff using jquery
}
document.getElementsByTagName('head')[0].appendChild(jq);