jQuery未就绪时执行的Javascript
下面的场景是我遇到的一个问题。通过观察这个场景,我得出结论,当Javascript执行时,jQuery不能准备就绪 场景: 我有一个Java应用程序,它将Javascript脚本标记注入当前加载的DOM页面。下面的Java代码运行内联Javascript,它插入jquery.js和myCode.jsmyCode.js保存我的Javascript代码jQuery未就绪时执行的Javascript,javascript,jquery,Javascript,Jquery,下面的场景是我遇到的一个问题。通过观察这个场景,我得出结论,当Javascript执行时,jQuery不能准备就绪 场景: 我有一个Java应用程序,它将Javascript脚本标记注入当前加载的DOM页面。下面的Java代码运行内联Javascript,它插入jquery.js和myCode.jsmyCode.js保存我的Javascript代码 browser.executeJavaScript("var head= document.getElementsByTagName('head'
browser.executeJavaScript("var head= document.getElementsByTagName('head')[0];" +
"var script= document.createElement('script');script.type= 'text/javascript';script.src= 'jquery.js';head.appendChild(script);" +
"var script4= document.createElement('script');script4.type= 'text/javascript';script4.src= 'http://myCode.js';head.appendChild(script4);");
在这个Java应用程序中,我还有一个buttonListener,它在ActionPerformed()中的myCode.js中触发一个函数
当单击按钮时,遇到的问题是上面一行的nullPointerException。适应空情况会导致无休止的循环,而不会发生任何更改
while(executedJS == null) browser.executeJavaScript("replaceAllLinks()");
问题的原因是当jQuery函数、方法出现在replaceAllLinks()中时;javascript函数。当jQuery没有方法时,就看不到任何问题。未引发一个nullPointerException实例
唯一可能的潜在问题是jQuery库在replaceAllLinks()时没有完全加载;正在被处决。如果jQuery方法和函数没有被使用,那也没关系,一切都正常运行
那么,我的问题是,如何确保jQuery已完全加载并可供使用?依赖jQuery的每个脚本都应该包含在一个DOM就绪函数中。此类功能通常采用以下形式:
$(document).ready(function() {
/* code here */
});
实现同样目标的捷径是:
$(function() {
/* code here */
});
以下是有关ready方法的更多信息的文档:
每个依赖jQuery的脚本都应该包含在一个DOM就绪函数中。此类功能通常采用以下形式:
$(document).ready(function() {
/* code here */
});
实现同样目标的捷径是:
$(function() {
/* code here */
});
以下是有关ready方法的更多信息的文档:
在末尾声明一些全局变量
jquery.js,例如
window.jQueryIsLoaded=true;
并在使用jQuery之前检查此变量
忘记这一点,请参见下面Salman A的评论,这应该是正确的答案。
在结尾声明一些全局变量
jquery.js,例如
window.jQueryIsLoaded=true;
并在使用jQuery之前检查此变量
忘记这一点,看看下面萨尔曼A的评论,应该是正确的答案。
你的$(文档)在哪里。准备好了吗?你的$(文档)在哪里。准备好了吗?事实上,你可以检查一下jQuery的类型!='未定义的“。但是在这种情况下,你有多确定jQuery是完全下载的?好的,我查看了jQuery.js,如果jQuery是已知的,那么必须是完整的。奇怪的是,jQuery是完全加载的……但是问题仍然发生……所以我错了?事实上,你可以检查jQuery的类型!='未定义“
。但在这种情况下,您有多确定jQuery是否已完全下载?好的,我查看了jQuery.js,如果知道jQuery,则必须完整。奇怪的是,jQuery已完全加载……但问题仍然存在……所以我错了?