一、SuperSlide插件
SuperSlide 致力于解决网站大部分特效展示问题,使网站代码规范整洁,方便维护更新。
网站上常用的“焦点图/幻灯片”“Tab标签切换”“图片滚动”“无缝滚动”等只需要一个SuperSlide即可解决!
从此无需网上苦苦寻觅特效,无需加载n个插件,无需害怕代码冲突,你需要的只是一个SuperSlide!
二、Jquery插件
jQuery是一个快速,小巧,功能丰富的JavaScript库。它通过易于使用的API在大量浏览器中运行,使得HTML文档遍历和操作,事件处理,动画和Ajax变得更加简单。通过多功能性和可扩展性的结合,jQuery改变了数百万人编写JavaScript的方式。
三、util.js Ajax请求辅助对象工具插件(自己写的)
//====================通用函数==================== /** * AJAX请求辅助对象 */ var ajax = {}; /** * AJAX请求 * * @param {Object} data * 参数 */ ajax.request = function(data) { if (data) { var options = { type: "post", error: ajax.errorCallBack }; $.ajax($.extend(options, data)); } }; /** * JSON参数请求 * * @param {Object} data * 参数 */ ajax.jsonRequest = function(data) { if (data) { if (data.data) { data.data = { json : JSON.stringify(data.data) }; } ajax.request(data); } }; /** * jsonp跨域请求 * * @param {Object} data * 参数 */ ajax.jsonp = function(data) { if (data) { var options = { type: "get", dataType: "jsonp", jsonp: "callback", error: ajax.errorCallBack }; ajax.request($.extend(options, data)); } }; /** * 代理页面地址 */ ajax.proxyUrl = "proxy/proxy.jsp"; /** * AJAX代理请求 * * @param {Object} data * 参数 */ ajax.proxy = function(data) { if (data) { var options = { url: ajax.proxyUrl + "?" + data.url, type: "get", error: ajax.errorCallBack }; delete data.url; ajax.request($.extend(options, data)); } }; /** * AJAX请求失败缺省回调函数 * * @param {Object} XMLHttpRequest * 请求对象 * @param {String} textStatus * 状态 * @param {String} errorThrown * 抛出错误 */ ajax.errorCallBack = function(XMLHttpRequest, textStatus, errorThrown) { var title = "服务器异常!"; /*switch (XMLHttpRequest.status) { }*/ common.alert(title, XMLHttpRequest.responseText); }; /** * 将表单数据序列化成JSON对象 * * @param {String} form * 表单jquery选择器 * @returns {Object} 表单JSON对象 */ ajax.serialize = function(form) { var data = {}; if (form) { var fields = $(form).serializeArray(); if (fields && fields.length) { $.each(fields, function(index, item) { data[item.name] = item.value; }); } } return data; }; /** * 基础通用辅助对象 */ var common = {}; /** * 将表单数据序列化成JSON对象 * * @param {String} form * 表单jquery选择器 * @returns {Object} 表单JSON对象 */ common.serialize = function(form) { var data = {}; if (form) { var fields = $(form).serializeArray(); if (fields && fields.length) { $.each(fields, function(index, item) { data[item.name] = item.value; }); } } return data; }; /** * 将请求参数对象封装到url中 * * @param {String} url * 文件路径 * @param {Object} param * 参数对象 * @return {String} 封装后的url */ common.parseParam = function(url, param) { var urlArr = [url]; if (param) { var paramArr = []; for (var key in param) { paramArr.push(key + "=" + param[key]); } if (paramArr.length > 0) { urlArr.push(url.lastIndexOf("?") == -1 ? "?" : "&"); urlArr.push(paramArr.join("&")); } } return urlArr.join(""); }; /** * 文件下载 * * @param {String} url * 文件路径 */ common.download = function(url) { var form = $("<form method=\"post\" action=\"" + url + "\"></form>"); $("body").append(form); form.submit(); form.remove(); }; /** * 根据文件后缀判断文件是否为图片 * * @param {String} type * 文件后缀 */ common.isImg = function(type) { if (type) { var suffix = type.toUpperCase(); return suffix == "BMP" || suffix == "JPG" || suffix == "JPEG" || suffix == "PNG" || suffix == "GIF"; } return false; }; /** * 弹出信息提示框 * * @param {String} info * 提示信息 */ common.alert = function(title, info) { if (layer) { layer.alert(info, {icon: 5, title: title}); } else { alert(title); } }; /** * 日期格式化函数 * * @param {Date} date * 日期 * @param {String} format * 日期格式 * @returns {String} 日期字符串 */ common.dateFormat = function(date, format) { format = format || "yyyy-MM-dd hh:mm:ss"; var o = { "M+": date.getMonth() + 1, "d+": date.getDate(), "h+": date.getHours(), "m+": date.getMinutes(), "s+": date.getSeconds(), "q+": Math.floor((date.getMonth() + 3) / 3), "S": date.getMilliseconds() }; if (/(y+)/.test(format)) { format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); } for (var k in o) { if (new RegExp("(" + k + ")").test(format)) { format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); } } return format; }; /** * 获取日期数值 * * @param {Any} * value 日期值 * @returns {Number} 日期数值 */ common.dateParse = function(value) { return typeof value === "number" ? value : Date.parse(value.replace(/-/g, "/")); }; /** * 将数据转为日期对象 * * @param {Any} * value 日期值 * @returns {Date} 日期对象 */ common.toDate = function(value) { return new Date(common.dateParse(value)); }; /** * 日期单位数值增加 * * @param {Date} * date 日期对象 * @param {String} * unit 单位标识(y:年,M:月,d:日,h:时,m:分,s:秒,S:毫秒) * @param {Integer} * value 增加数值 */ common.addDate = function(date, unit, value) { if (date && unit && value) { value = isNaN(value) ? 0 : value * 1; switch (unit) { case "y": date.setFullYear(date.getFullYear() + value); break; case "M": date.setMonth(date.getMonth() + value); break; case "d": date.setDate(date.getDate() + value); break; case "h": date.setHours(date.getHours() + value); break; case "m": date.setMinutes(date.getMinutes() + value); break; case "s": date.setSeconds(date.getSeconds() + value); break; case "S": date.setMilliseconds(date.getMilliseconds() + value); break; } } }; /** * 日期单位数值减少 * * @param {Date} * date 日期对象 * @param {String} * unit 单位标识(y:年,M:月,d:日,h:时,m:分,s:秒,S:毫秒) * @param {Integer} * value 减少数值 */ common.reduceDate = function(date, unit, value) { if (date && unit && value) { value = isNaN(value) ? 0 : value * 1; switch (unit) { case "y": date.setFullYear(date.getFullYear() - value); break; case "M": date.setMonth(date.getMonth() - value); break; case "d": date.setDate(date.getDate() - value); break; case "h": date.setHours(date.getHours() - value); break; case "m": date.setMinutes(date.getMinutes() - value); break; case "s": date.setSeconds(date.getSeconds() - value); break; case "S": date.setMilliseconds(date.getMilliseconds() - value); break; } } }; /** * 获取UUID * * @returns {String} UUID */ common.uuid = function() { var s = []; var hexDigits = "0123456789abcdef"; for ( var i = 0; i < 36; i++) { s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); } s[14] = "4"; s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); s[8] = s[13] = s[18] = s[23] = "-"; return s.join("").replace(/-/g, "").toUpperCase(); }; /** * 获取跳转参数 * * @param {String} param * 参数名 * @returns {String} 参数值 */ common.getRequestParam = function(param) { var href = window.document.location.href; var index = href.indexOf("?"); var paramStr = href.substr(index + 1); var paramArr = paramStr.split("&"); for (var i = 0; i < paramArr.length; i++) { var itemArr = paramArr[i].split("="); if (itemArr[0].toUpperCase() == param.toUpperCase()) { return itemArr[1]; } } return null; }; /** * HTML页面路由 * * @param {Object} data * 传递参数 */ common.route = function(data) { if (data) { var options = { success: function(result) { common.routeParam = data.param ? data.param : null; if (data.callback) { data.callback(result); } else if (data.container) { $(data.container).html(result); } } }; ajax.request($.extend(options, data)); } }; /** * 路由传递的参数 */ common.routeParam = null; /** * 引入HTML、JS、CSS文件 * * @param {String|Array} * path 文件路径 * @param {Function} callback * HTML文件加载成功后的回调函数 */ common.importFile = function(path, callback) { if (path) { var content = ""; if (common.isArray(path)) { var tags = []; for (var i = 0; i < path.length; i++) { tags.push(getTag(path[i])); } content = tags.join(""); } else if (common.typeOf(path, "string")) { content = getTag(path); } document.writeln(content); } function getTag(url) { var tag = ""; url = $.trim(url); var suffix = url.substr(url.lastIndexOf(".") + 1); switch (suffix) { case "html": var count = 0; common.route({ url: url, callback: function(html) { document.writeln(html); count++; if (common.typeOf(path, "string") || count == path.length) { callback && callback(); } } }); break; case "js": tag = "<script type=\"text/javascript\" src=\"" + url + "\"></script>"; break; case "css": tag = "<link rel=\"stylesheet\" type=\"text/css\" href=\"" + url + "\"/>"; break; } return tag; } }; /** * 将数据自动装入表单元素中 * * @param {DOM} form * 表单 * @param {Object} data * 数据 */ common.formData = function(form, data) { if (form && data) { for (var key in data) { var dom = $(form).find("[name=" + key + "]"); if (!$.isFunction(data[key]) && dom.length) { dom.val(data[key]); } } } }; /** * 保留小数位 * * @param {Number} decimal * 数值 * @param {Integer} bit * 位数 * @returns {Number} 变更后的数值 */ common.ellipsisDecimal = function(decimal, bit) { decimal += ""; var index = decimal.indexOf("."); if (index != -1 && decimal.substr(index + 1).length > bit) { var end = index + 1 + bit; decimal = decimal.substring(0, end); } return parseFloat(decimal); }; /** * 对象类型是否匹配 * * @param {Any} * object 对象 * @param {String} * type 类型 * @returns {Boolean} 是否匹配 */ common.typeOf = function(object, type) { return typeof object === type; }; /** * 对象类型是否为数组 * * @param {Any} * object 对象 * @returns {Boolean} 是否为数组 */ common.isArray = function(object) { return Object.prototype.toString.call(object) === "[object Array]"; }; /** * 页面全屏显示 * * @param {Document} * dom dom对象 * @returns {Boolean} 是否全屏 */ common.fullScreen = function(dom) { if (!document.fullscreenElement && !document.msFullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement) { dom = dom || document.documentElement; if (dom.requestFullscreen) { dom.requestFullscreen(); } else if (dom.msRequestFullscreen) { dom.msRequestFullscreen(); } else if (dom.mozRequestFullScreen) { dom.mozRequestFullScreen(); } else if (dom.webkitRequestFullscreen) { dom.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); } return true; } else { if (document.exitFullscreen) { document.exitFullscreen(); } else if (document.msExitFullscreen) { document.msExitFullscreen(); } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if (document.webkitExitFullscreen) { document.webkitExitFullscreen(); } return false; } }; /** * 对象克隆 * * @param {Any} * obj 源对象 * @returns {Any} 克隆对象 */ common.clone = function(obj) { if (obj) { if ($.isPlainObject(obj)) { return $.extend(true, {}, obj); } else if ($.isArray(obj)) { return obj.concat(); } } return null; }; /** * WebSocket处理器 * * @param {String} * url 服务端URL地址 * @param {Function} * onmessage 收到服务端消息回调函数 * @param {Function} * onopen 与服务端连接成功回调函数 * @param {Function} * onclose 与服务端连接关闭回调函数 * @param {Function} * onerror 与服务端连接发生错误回调函数 * @param {Function} * onbeforeunload 当前浏览器窗口已关闭回调函数 */ var WebSocketHandler = function(url, onmessage, onopen, onclose, onerror, onbeforeunload) { /** * WebSocket处理器对象 */ var _this = this; /** * WebSocket初始化方法 */ _this._init = function() { if ("WebSocket" in window) { if (url) { _this.webSocket = new WebSocket(url); onmessage && (_this.webSocket.onmessage = onmessage); onopen && (_this.webSocket.onopen = onopen); onclose && (_this.webSocket.onclose = onclose); _this.webSocket.onerror = onerror ? onerror : function(event) { console.log(event); }; window.onbeforeunload = onbeforeunload ? onbeforeunload : function(event) { _this.webSocket.close(); }; } else { common.alert("未设置URL地址"); } } else { common.alert("当前浏览器 不支持 WebSocket"); } }; /** * 发送消息到服务端 * * @param {String} * message 消息 */ _this.send = function(message) { _this.webSocket && message && _this.webSocket.send(message); }; /** * 关闭当前连接 */ _this.close = function() { _this.webSocket && _this.webSocket.close(); }; /** * 设置接收消息的回调函数 * * @param {Function} * onmessage 回调函数 */ _this.setOnMessage = function(onmessage) { _this.webSocket && onmessage && (_this.webSocket.onmessage = onmessage); }; /** * 设置与服务端连接成功的回调函数 * * @param {Function} * onopen 回调函数 */ _this.setOnOpen = function(onopen) { _this.webSocket && onopen && (_this.webSocket.onopen = onopen); }; /** * 设置与服务端连接关闭的回调函数 * * @param {Function} * onclose 回调函数 */ _this.setOnClose = function(onclose) { _this.webSocket && onclose && (_this.webSocket.onclose = onclose); }; /** * 设置连接发生错误的回调函数 * * @param {Function} * onerror 回调函数 */ _this.setOnError = function(onerror) { _this.webSocket && onerror && (_this.webSocket.onerror = onerror); }; /** * 设置当前浏览器窗口已关闭的回调函数 * * @param {Function} * onbeforeunload 回调函数 */ _this.setOnBeforeUnload = function(onbeforeunload) { onbeforeunload && (window.onbeforeunload = onbeforeunload); }; /** * 执行初始化 */ _this._init(); };
四、config.js 接口服务器地址配置
/** * 服务端接口配置对象 */ var config = {}; /** * 公共数据缓存对象 */ var cache = {}; /** * 系统公共函数 */ var system = {}; (function() { /** * 应用服务对象 */ config.severImg= {}; config.Websever= {}; config.sever= {}; /** * 接口服务地址 */ //config.sever.path = "http://localhost:8080/a/"; config.severImg.path = "http://localhost:8080"; config.sever.path = "http://localhost:8080/a/"; //config.sever.path = "http://localhost:8080/a/"; //config.severImg.path = "http://localhost:8080/"; config.Websever.path="http://localhost:8081/"; })();