如何确定jQuery是否已完全初始化
How can I determine whether jQuery is fully initialized?
我正在使用jQuery编写一个bookmarklet。它看起来像javascript:document.write('<script src="path/to/loader.js"></script>')
,loader.js
做初始化填充:
check_the_environment();
document.head.innerHTML='<meta charset=utf-8>';
document.body.innerHTML='(the webpage)';
var jq=document.createElement('script');
jq.src='path/to/jquery.min.js';
document.head.appendChild(jq);
function load_core() {
if(window.$)
eval('(core js code)');
else
setTimeout(load_core,50);
}
load_core();
加载程序在jQuery可用后加载核心javascript代码。
但有时我的核心代码中会出现这样的错误:
$(...).on is not a function
虽然设置了$
变量,但jQuery似乎仍在初始化自己。
因此,在加载程序加载核心代码之前,我需要等待jQuery被完全初始化。我该怎么做?
传统的使用$(document).ready(...)
的方式是不可行的,因为jQuery是在网页准备好后加载的。
下面是一个检查解决方案是否有效的最小Python代码:
import cherrypy
mod='''
var htmlroot=document.getElementsByTagName('html')[0];
function load_core() {
if(window.jQuery)
jQuery(function(){
alert($(document).on);
});
else
setTimeout(load_core,10);
}
if(!document.head)
htmlroot.appendChild(document.createElement('head'));
var jquery=document.createElement('script');
jquery.src='http://libs.useso.com/js/jquery/2.1.1/jquery.min.js';
document.head.appendChild(jquery);
load_core();
'''
class Website:
@cherrypy.expose()
def mod(self,_time):
return mod
@cherrypy.expose()
def index(self):
return '''<a href="javascript:document.write('<script src=/mod/'+(+new Date())+' ></script>')">Mod</a>'''
cherrypy.quickstart(Website(),'/');
正确且万无一失的方法是:
jQuery(function(){
// code
});
由于jQuery可能在noConflict模式下加载,$
var可能尚未初始化。
为了提高生产力,以下内容也可以用于访问jQuery
范围内的$
var。
jQuery(function($){
// you can use $ without worrying about conflicts now
});
您可以在下面检查$的类型
if(typeof $ == "function"){
//Jquery loaded
}
相关文章:
- 用真或假初始化变量是否在 Javascript 中建立了内容的方向
- 检查对话框是否为 Open 会引发“初始化前无法在对话框上调用方法”错误
- 初始化是否可以存储为JavaScript中的字符串
- 是否需要初始化在 Javascript 中作为“类”构造函数参数传递的变量
- jqGrid - 是否可以在初始化后设置 onSortCol
- 是否可以在一行代码中定义和初始化JavaScript中的多维数组
- JS原型是否可以访问初始化期间传递给对象的参数
- 是否可以在 ajax 调用后重新初始化 jQuery 的所有插件
- AngularJs-如何知道控制器是否完成初始化
- 如何确定jQuery是否已完全初始化
- 如何检查同位素是否已初始化
- 是否可以使用隐藏/额外的参数初始化变量
- 是否可以用类似C#的JavaScript进行对象初始化
- 是否可以在不创建全局回调函数的情况下异步初始化Google Maps ?
- 如何检查jQuery Globalize是否初始化
- 我们可以知道一个谷歌地图是否已经初始化
- 检查事件是否被初始化,是否有监听器
- 是否有一种方法来初始化和取消初始化基于视口大小的jquery插件
- 是否可以在被动初始化之后定义函数和计算属性?
- 新手:检查表单初始化时是否选中了单选按钮.这个代码是什么意思