var jqcdnurl = 'https://cdn.bootcss.com/jquery/3.2.1/jquery.js';
//控制台输出
function log() {
for (var index in arguments) {
console.log(arguments[index]);
}
}
//js加载 fun
function loadjs() {
arguments[0]();
for (var index in arguments) {
if (index != 0) {
document.write("<scr" + "ipt src=\"" + arguments[index] + "\"></sc" + "ript>");
log("java script :" + arguments[index] + " -> please waiting,loading...↓")
}
}
} //异常处理函数 fun
function catchErro() {
try {
if (arguments.length > 0) {
arguments[0]();
} } catch (err) {
if (arguments.length > 1) {
arguments[1](err);
} } finally {
if (arguments.length > 2) {
arguments[2]();
} }
} //是否具有jq 环境 fun
function isHasJq() {
return typeof (jQuery) == "undefined" ? false : true;
} //动态加载js fun
function loadScript(url, callback) {
var script = document.createElement("script");
script.type = "text/javascript";
if (typeof (callback) != "undefined") {
if (script.readyState) {
script.onreadystatechange = function () {
if (script.readyState == "loaded" || script.readyState == "complete") {
script.onreadystatechange = null;
callback();
}
};
} else {
script.onload = function () {
callback();
};
}
};
script.src = url;
document.body.appendChild(script);
} //是否存在此src js fun
function isHasjsBysrc(url) {
var ishave = false;
var headscripts = document.getElementsByTagName('script');
for (var index in headscripts) { if (headscripts[index].src == url) {
ishave = true
}
log("引入脚本:" + headscripts[index].src); }
log("JQ 脚本状态:" + ishave);
return ishave;
}
//加载jqcdn #废除 fun
function appendJQCDN() {
if (!isHasjsBysrc("https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js")) {
var head = document.head || document.getElementsByTagName('head')[0];
var script = document.createElement('script');
var style = document.createElement('style');
script.setAttribute("src", "https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js");
style.innerHTML = '';
head.appendChild(script);
head.appendChild(style);
log("JQ CDN 引入成功! ");
}
} //动态加载JQ并执行 fun
function dynamicAddJQExcute(excuteFUN) {
loadScript(jqcdnurl, excuteFUN);
log("JQ ALL Ready!");
} //加载js
loadjs(function () {
log("cs_base-js load ok!", "loading done");
}, "js/csopp.js", "js/cstip.js"); //JQ执行函数
function ExcuteCs(fun) {
if (isHasJq()) {
$(document).ready(function () {
fun();
});
} else {
dynamicAddJQExcute(function () {
$(document).ready(function () {
fun();
});
}); }
} document.onload = catchErro(
function () {
if (isHasJq()) {
log("JQ ALL Ready!");
} else throw ex;
},
function (ex) {
log("没有引入 JQ 环境,请引入JQ 环境", "动态引入.... (未在网络状态则无法动态引用)" ,"建议手动引入,否则造成未知错误,对此不负任何责任");
}
);

ExcuteCs(function(){
$("body").html("TEST");
});

js动态检测加载 JQ的更多相关文章

  1. 动态加载JS文件,并根据JS文件的加载状态来执行自己的回调函数

    动态加载JS文件,并根据JS文件的加载状态来执行自己的回调函数, 在很多场景下,我们需要在动态加载JS文件的时候,根据加载的状态来进行后续的操作,需要在JS加载成功后,执行另一方法,这个方法是依托在加 ...

  2. nginx实现动态分离,解决css和js等图片加载问题

    改帖专门为使用nginx,通过nginx把请求转发到web服务器再返回客户端的时候,解决css和js和图片加载不出来的问题. 如果没安装nginx,请访问一下地址进行安装 http://www.cnb ...

  3. JS性能优化——加载和执行

    JavaScript 在浏览器中的性能,可以认为是开发者所面临得最严重的可用性问题.这个问题因JavaScript的阻塞特性变得复杂, 也就是说当浏览器在执行JavaScript代码时,不能同时做其他 ...

  4. 关于js css html加载顺序整理

    1.js放在head中会立即执行,阻塞后续的资源下载与执行.因为js有可能会修改dom,如果不阻塞后续的资源下载,dom的操作顺序不可控. 正常的网页加载流程是这样的. 浏览器一边下载HTML网页,一 ...

  5. js判断图片加载完成后获取图片实际宽高

    通常,我们会用jq的.width()/.height()方法获取图片的宽度/高度或者用js的.offsetwidth/.offsetheight方法来获取图片的宽度/高度,但这些方法在我们通过样式设置 ...

  6. 高性能JS笔记1——加载执行

    一.脚本位置 1.Script标签尽可能放到Body底部,以减少脚本文件下载对整个页面UI渲染的影响. 2.Script标签永远不要紧跟Link标签后面. 二.组织脚本 1.合并多个文件在一个Scri ...

  7. js优化 ----js的有序加载

    说到有序加载,我们先来说说js的无序加载: <script src="jquery/jquery-1.4.1.js" type="text/javascript&q ...

  8. esri-leaflet入门教程(5)- 动态要素加载

    esri-leaflet入门教程(5)- 动态要素加载 by 李远祥 在上一章节中已经说明了esr-leaflet是如何加载ArcGIS Server提供的各种服务,这些都是服务本身来决定的,API脚 ...

  9. js的异步加载你真的懂吗

    面试高频之js的异步加载 讲这个问题之前, 我们从另一个面试高频问题来切入, 我们的web页面从开始解析到页面渲染完成都经历了什么 ?  1  ,  创建document对象, 开始解析页面,    ...

随机推荐

  1. kubectl基础支持

    kubectl get deployment -n alpha kubectl get deployment *****-deployment -n alpha -o json kubectl rol ...

  2. Codeforces-Anastasia and pebbles

    这是一道很有意思的(水)题. 地址戳:http://codeforces.com/problemset/problem/789/A 题目的大意呢,就是一个可爱的大姐姐的故事.说是啊,她每天都带着两个一 ...

  3. border:none和border:0的区别

    C:当定义border:none时,表示无边框样式,浏览器并不会对边框进行渲染,也就没有实际的宽度:  D:定义边框时,除了设置宽度外,还必须设置边框的样式才能显示出来.     border:0;浏 ...

  4. hdu 3832 Earth Hour bfs

    Earth Hour Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others) Prob ...

  5. PyEngine3D

    git clone https://github.com/ubuntunux/PyEngine3D cd PyEngine3D pip install -r requirements.txt pyth ...

  6. django自定制Admin

    如果只是在admin中简单的展示及管理模型,那么在admin.py模块中使用admin.site.register将模型注册一下就好了: from django.contrib import admi ...

  7. Activity回传值报错:Failure delivering result ResultInfo{who=null,request=7,result = 0,data=null}

    Activity  A   -----值------->  Activity  B   -----值----->  Activity  A     场景:当A跳转到B,再从B直接点击返回按 ...

  8. macOS下Hive 2.x的安装与配置

    1 简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的[SQL]查询功能,可以将SQL语句转换为MapReduce任务进行运行.其优点是学习成本 ...

  9. pytorch-1.0 踩坑记录

    参加百度的一个竞赛,官方要求把提交的代码测试环境pyorch1.0,于是将自己计算机pytorch升级到1.0. 在ubuntu下用conda install pytorch 命令安装时,效果很差,解 ...

  10. js获取时间戳(new date()参数获取)

    当获取截止到某一个时间点的时间戳时: 例如:到 2018-03-15 11:03:55 这个时间点的时间戳的时候 正确的写法: var data = new Date("2018/03/15 ...