我通过控制台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'类的标签。好像控制台在等待更新?或者是什么?
答案 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);