动态加载jQuery的两种方法实例分析


Posted in Javascript onJuly 17, 2015

本文实例讲述了动态加载jQuery的两种方法。分享给大家供大家参考。具体如下:

第一种方法参考本站之前有人发的代码,增加了加载检测;
第二种方法来自去年的12306刷票脚本。

第一种方法:

function withjQuery(callback) {
 if(!(window.jQuery)) {
 var js = document.createElement('script');
 js.setAttribute('src', 'https://dynamic.12306.cn/otsweb/js/common/jquery-1.4.2.min.js?version=5.47');
 js.setAttribute('type', 'text/javascript');
 js.onload = js.onreadystatechange = function() {
  if (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete') {
    if(callback && typeof callback === "function") {
     callback();
    }
   js.onload = js.onreadystatechange = null;
  }
 };
 document.getElementsByTagName('head')[0].appendChild(js);
 }
}
withjQuery( 
 function() { 
  $(function(){ alert("jQuery loaded"); })(); 
 }
);

第二种方法:

// ==UserScript== 
// @name   12306 Booking Assistant
// @version  1.4.0
// @author  zzdhidden@gmail.com
// @namespace https://github.com/zzdhidden
// @description 12306 订票助手之(自动登录,自动查票,自动订单)
// @include  *://dynamic.12306.cn/otsweb/*
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
// ==/UserScript== 
function withjQuery(callback, safe){
 if(typeof(jQuery) == "undefined") {
  var script = document.createElement("script");
  script.type = "text/javascript";
  script.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js";
  if(safe) {
   var cb = document.createElement("script");
   cb.type = "text/javascript";
   cb.textContent = "jQuery.noConflict();(" + callback.toString() + ")(jQuery, window);";
   script.addEventListener('load', function() {
    document.head.appendChild(cb);
   });
  }
  else {
   var dollar = undefined;
   if(typeof($) != "undefined") dollar = $;
   script.addEventListener('load', function() {
    jQuery.noConflict();
    $ = dollar;
    callback(jQuery, window);
   });
  }
  document.head.appendChild(script);
 } else {
  setTimeout(function() {
   //Firefox supports
   callback(jQuery, typeof unsafeWindow === "undefined" ? window : unsafeWindow);
  }, 30);
 }
}
withjQuery(function($, window){
 $(function() { alert("jQuery loaded"); })();
}, true);

希望本文所述对大家的jquery程序设计有所帮助。

Javascript 相关文章推荐
Extjs Ajax 乱码问题解决方案
Apr 15 Javascript
javascript 打印内容方法小结
Nov 04 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
Aug 30 Javascript
JS简单的图片放大缩小的两种方法
Nov 11 Javascript
javascript自定义startWith()和endWith()的两种方法
Nov 11 Javascript
jQuery中delegate与on的用法与区别示例介绍
Dec 20 Javascript
JavaScript中的small()方法使用详解
Jun 08 Javascript
localStorage的黑科技-js和css缓存机制
Feb 06 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
Jul 15 Javascript
vuejs使用FormData实现ajax上传图片文件
Aug 08 Javascript
详解SPA中前端路由基本原理与实现方式
Sep 12 Javascript
vue实现移动端图片上传功能
Dec 23 Javascript
javascript父子页面通讯实例详解
Jul 17 #Javascript
javascript实现的闭包简单实例
Jul 17 #Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
Jul 17 #Javascript
JavaScript实现基于十进制的四舍五入实例
Jul 17 #Javascript
JavaScript之AOP编程实例
Jul 17 #Javascript
js+html5实现可在手机上玩的拼图游戏
Jul 17 #Javascript
javascript封装的sqlite操作类实例
Jul 17 #Javascript
You might like
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
php抛出异常与捕捉特定类型的异常详解
2016/10/26 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
PHP获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
javascript之典型高阶函数应用介绍
2013/01/10 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
JS公共小方法之判断对象是否为domElement的实例
2016/11/25 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
2016/11/25 Javascript
概述BootStrap中role="form"及role作用角色
2016/12/08 Javascript
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
python每次处理固定个数的字符的方法总结
2013/01/29 Python
python中正则的使用指南
2016/12/04 Python
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
Python多线程实现同步的四种方式
2017/05/02 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
美国女性运动零售品牌:Lady Foot Locker
2017/05/12 全球购物
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
优秀士兵先进事迹
2014/02/06 职场文书
小学校本培训方案
2014/06/06 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
出纳岗位职责范本
2015/03/31 职场文书
电影建党伟业观后感
2015/06/01 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
Django debug为True时,css加载失败的解决方案
2021/04/24 Python
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL
MySQL多表查询机制
2022/03/17 MySQL