动态加载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 相关文章推荐
Jquery时间验证和转换工具小例子
Jul 01 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
Sep 02 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
Jul 18 Javascript
原生javascript获取元素样式
Dec 31 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
Aug 14 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
Jun 08 Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
Apr 13 Javascript
React Native使用百度Echarts显示图表的示例代码
Nov 07 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
Sep 27 Javascript
vue-cli3使用 DllPlugin 实现预编译提升构建速度
Apr 24 Javascript
React实现阿里云OSS上传文件的示例
Aug 10 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
Oct 31 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
php常见的魔术方法详解
2014/12/25 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
PHP hex2bin()函数用法讲解
2019/02/25 PHP
Js 随机数产生6位数字
2010/05/13 Javascript
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
javascript的函数作用域
2014/11/12 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
Ajax基础知识详解
2017/02/17 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
从零学Python之入门(三)序列
2014/05/25 Python
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
tensorflow 获取模型所有参数总和数量的方法
2018/06/14 Python
pyqt5中QThread在使用时出现重复emit的实例
2019/06/21 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
优秀毕业生求职信范文
2014/01/02 职场文书
保证书格式范文
2014/04/28 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers