yeepay-1.0.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. /*
  2. 此库做为易宝基本库,其后所有常用插件开发都基于此库,此库包含“YEEPAY”对象,在以后开发插件时不要再次声明该对象。
  3. 开发日期:2012.11.30
  4. 开发人:xiaying
  5. */
  6. var YEEPAY = {
  7. addHandler : function (element, type, handler) { //绑定事件
  8. if (element.addEventListener) {
  9. element.addEventListener(type, handler, false);
  10. } else if (element.attachEvent) {
  11. element.attachEvent("on" + type, handler);
  12. } else {
  13. element["on" + type] = handler;
  14. }
  15. },
  16. getEvent : function (event) { //返回event对象
  17. return event ? event : window.event;
  18. },
  19. getTarget : function (event) {
  20. return event.target || event.srcElement;
  21. },
  22. preventDefault : function (event) { //取消默认行为
  23. if (event.preventDefault) {
  24. event.preventDefault();
  25. } else {
  26. event.returnValue = false;
  27. }
  28. },
  29. stopPropagation : function (event) { //取消冒泡
  30. if (event.stopPropagation) {
  31. event.stopPropagation();
  32. } else {
  33. event.cancelBubble = true;
  34. }
  35. },
  36. removeHandler : function (element, type, handler) { //删除事件
  37. if (element.removeEventListener) {
  38. element.removeEventListener(type, handler, false);
  39. } else if (element.detachEvent) {
  40. element.detachEvent("on" + type, handler);
  41. } else {
  42. element["on" + type] = null;
  43. }
  44. },
  45. browser : function () { //判断浏览器
  46. var ua = navigator.userAgent.toLocaleLowerCase();
  47. if (ua.indexOf("msie") > -1) {
  48. return "ie";
  49. } else if (ua.indexOf("firefox") > -1) {
  50. return "firefox";
  51. } else if (ua.indexOf("chrome") > -1) {
  52. return "chrome";
  53. } else if (ua.indexOf("safari") > -1) {
  54. return "safari";
  55. } else if (ua.indexOf("opera") > -1) {
  56. return "opera";
  57. } else if (ua.indexOf("webkit") > -1) {
  58. return "webkit"
  59. }
  60. },
  61. enable : function () { //可拖动
  62. var dragging = null,
  63. diffX = 0,
  64. diffY = 0;
  65. var that = this;
  66. function handler(event) { //拖动手柄
  67. event = that.getEvent(event);
  68. var target = that.getTarget(event);
  69. switch (event.type) {
  70. case "mousedown":
  71. if (target.className.indexOf("drag") > -1) {
  72. dragging = target;
  73. diffX = event.clientX - target.offsetLeft;
  74. diffY = event.clientY - target.offsetTop;
  75. }
  76. break;
  77. case "mousemove":
  78. if (dragging !== null) {
  79. dragging.style.left = (event.clientX - diffX) + "px";
  80. if (parseInt(dragging.style.left) <= 0) { //只能在可视窗口内拖动,防止出现滚动条
  81. dragging.style.left = "0px";
  82. } else if (parseInt(dragging.style.left) >= (document.documentElement.clientWidth - dragging.offsetWidth)) {
  83. dragging.style.left = document.documentElement.clientWidth - dragging.offsetWidth + "px";
  84. }
  85. ;
  86. dragging.style.top = (event.clientY - diffY) + "px";
  87. if (parseInt(dragging.style.top) <= 0) {
  88. dragging.style.top = "0px";
  89. } else if (that.browser() == "safari" || that.browser() == "chrome") {
  90. if (parseInt(dragging.style.top) >= ((document.documentElement.clientHeight - dragging.offsetHeight) + document.body.scrollTop)) {
  91. dragging.style.top = (document.documentElement.clientHeight - dragging.offsetHeight) + document.body.scrollTop + "px";
  92. }
  93. } else {
  94. if (parseInt(dragging.style.top) >= ((document.documentElement.clientHeight - dragging.offsetHeight) + document.documentElement.scrollTop)) {
  95. dragging.style.top = (document.documentElement.clientHeight - dragging.offsetHeight) + document.documentElement.scrollTop + "px";
  96. }
  97. }
  98. }
  99. ;
  100. break;
  101. case "mouseup":
  102. dragging = null;
  103. break;
  104. }
  105. };
  106. this.addHandler(document, "mousedown", handler);
  107. this.addHandler(document, "mousemove", handler);
  108. this.addHandler(document, "mouseup", handler);
  109. },
  110. getViewport : function () {
  111. if (document.compatMode == "BackCompat") {
  112. return {
  113. width : document.body.clientWidth,
  114. height: document.body.clientHeight
  115. }
  116. } else {
  117. return {
  118. width : document.documentElement.clientWidth,
  119. height: document.documentElement.clientHeight
  120. }
  121. }
  122. },
  123. popping : function (id, boolean) { //弹出层
  124. try {
  125. var pop_obj = document.getElementById(id);
  126. pop_obj.style.display = "block";
  127. var pop_obj_h = pop_obj.offsetHeight,
  128. pop_obj_w = pop_obj.offsetWidth;
  129. if (boolean) { //设置遮罩
  130. mask = document.createElement("div");
  131. mask.id = "mask";
  132. mask.style.position = "fixed";
  133. mask.style.top = 0 + "px";
  134. mask.style.left = 0 + "px";
  135. mask.style.height = this.getViewport().height + "px";
  136. mask.style.width = this.getViewport().width + "px";
  137. document.body.appendChild(mask);
  138. var that = this;
  139. //this.addHandler(mask,"click",function(){that.closed(id)});
  140. if (!window.XMLHttpRequest) {
  141. iframe = document.createElement("iframe");
  142. iframe.id = "iframeMask";
  143. iframe.className = "frame_mask";
  144. mask.style.position = "absolute";
  145. iframe.style.position = "absolute";
  146. iframe.style.top = document.documentElement.scrollTop + "px";
  147. mask.style.top = document.documentElement.scrollTop + "px";
  148. iframe.style.left = 0 + "px";
  149. iframe.style.height = this.getViewport().height + "px";
  150. iframe.style.width = this.getViewport().width + "px";
  151. iframe.setAttribute("frameborder", 0);
  152. document.body.appendChild(iframe);
  153. this.addHandler(window, "scroll", function () {
  154. mask.style.top = document.documentElement.scrollTop + "px";
  155. iframe.style.top = document.documentElement.scrollTop + "px";
  156. });
  157. }
  158. }
  159. ;
  160. var that = this;
  161. function init() { //弹出初始化位置
  162. if (document.documentElement.clientHeight - pop_obj_h > 0 && document.documentElement.clientWidth - pop_obj_w > 0) {
  163. pop_obj.style.left = (document.documentElement.clientWidth - pop_obj_w) / 2 + "px";
  164. if (that.browser() == 'chrome' || that.browser() == 'safari') {
  165. pop_obj.style.top = ((document.documentElement.clientHeight - pop_obj_h) / 2) + document.body.scrollTop + "px";
  166. } else {
  167. pop_obj.style.top = ((document.documentElement.clientHeight - pop_obj_h) / 2) + document.documentElement.scrollTop + "px";
  168. }
  169. ;
  170. } else {
  171. pop_obj.style.left = (document.documentElement.clientWidth - pop_obj_w) / 2 + "px";
  172. if (that.browser() == 'chrome' || that.browser() == 'safari') {
  173. pop_obj.style.top = document.body.scrollTop + 20 + "px";
  174. } else {
  175. pop_obj.style.top = document.documentElement.scrollTop + 20 + "px";
  176. }
  177. }
  178. }
  179. init();
  180. this.addHandler(window, "resize", function () {
  181. init();
  182. });
  183. } catch (e) {
  184. ///
  185. }
  186. },
  187. closed : function (id) { //关闭弹出层
  188. tar = document.getElementById(id);
  189. tar.style.display = "none";
  190. if (typeof mask !== 'undefined') {
  191. document.body.removeChild(document.getElementById("mask"));
  192. }
  193. if (typeof iframe !== 'undefined') {
  194. document.body.removeChild(document.getElementById("iframeMask"));
  195. }
  196. },
  197. nextNode : function (id) { //获取下一个节点
  198. var nod = document.getElementById(id) || id;
  199. if (nod.nextSibling.nodeType == 1) {
  200. return nod.nextSibling;
  201. } else {
  202. return nod.nextSibling.nextSibling;
  203. }
  204. },
  205. get : function (node) {//获取DOM元素
  206. noed = typeof node == "string" ? document.getElementById(node) : node;
  207. return node;
  208. },
  209. getElementByClass: function (str, root, tag) { //第一个必选的class名,第二个参数是可选的父容器,缺省为body,第三个为DOM节点名
  210. if (root) {
  211. root = typeof root == "string" ? document.getElementById(root) : root;
  212. } else {
  213. root = document.body;
  214. }
  215. tag = tag || "*";
  216. var els = root.getElementsByTagName(tag),
  217. arr = [];
  218. for (var i = 0, n = els.length; i < n; i++) {
  219. for (var j = 0, k = els[i].className.split(" "), l = k.length; j < l; j++) {
  220. if (k[j] == str) {
  221. arr.push(els[i]);
  222. break;
  223. }
  224. }
  225. }
  226. return arr;
  227. },
  228. addClass : function (node, str) {//添加class
  229. if (!new RegExp("(^|\\s+)" + str).test(node.className)) {
  230. node.className = node.className + " " + str;
  231. }
  232. },
  233. removeClass : function (node, str) {//删除class
  234. node.className = node.className.replace(new RegExp("(^|\\s+)" + str), "");
  235. },
  236. hasClass : function (node, selector) { //是否有指定class
  237. var className = " " + selector + " ";
  238. if (node.nodeType === 1 && (" " + node.className + " ").replace(/[\n\t\r]g/, " ").indexOf(className) > -1) {
  239. return true;
  240. }
  241. return false;
  242. },
  243. getText: function (element) { //返回内部文本
  244. if (typeof element == "object") {
  245. return text = element.textContent ? element.textContent : element.innerText;
  246. } else {
  247. if (typeof element == "string") {
  248. var element = document.getElementById(element);
  249. return text = element.textContent ? element.textContent : element.innerText;
  250. }
  251. }
  252. },
  253. setText: function (element, string) { //设置内部文本
  254. if (typeof element == "object") {
  255. if (typeof element.textContent == "string") {
  256. element.textContent = string;
  257. } else {
  258. element.innerText = string;
  259. }
  260. } else {
  261. if (typeof element == "string") {
  262. var element = document.getElementById(element);
  263. if (typeof element.textContent == "string") {
  264. element.textContent = string;
  265. } else {
  266. element.innerText = string;
  267. }
  268. }
  269. }
  270. }
  271. };
  272. function createXHR() { //创建XHR对象方法
  273. if (typeof XMLHttpRequest != "undefined") {
  274. createXHR = function () {
  275. return new XMLHttpRequest();
  276. };
  277. } else if (typeof ActiveXObject != "undefined") {
  278. createXHR = function () {
  279. var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp"];
  280. for (var i = 0,
  281. len = versions.length; i < len; i++) {
  282. try {
  283. var xhr = new ActiveXObject(versions[i]);
  284. return xhr;
  285. } catch (e) {
  286. //跳过
  287. }
  288. }
  289. };
  290. } else {
  291. createXHR = function () {
  292. throw new Error("XHR对象不可用!");
  293. }
  294. }
  295. return createXHR();
  296. };
  297. Array.prototype.unique = function () { //去除数组重复元素
  298. var ret = [];
  299. var o = {};
  300. var len = this.length;
  301. for (var i = 0; i < len; i++) {
  302. var v = this[i];
  303. if (!o[v]) {
  304. o[v] = 1;
  305. ret.push(v);
  306. }
  307. }
  308. return ret;
  309. };
  310. function addURLParam(url, name, value) { //URL编码
  311. url += (url.indexOf("?") == -1 ? "?" : "&");
  312. url += encodeURIComponent(name) + "=" + encodeURIComponent(value);
  313. return url;
  314. }
  315. function getUrlData(name) { //返回指定的url参数值,name为key名称
  316. var newStr = document.location.search.slice(1);
  317. var array = newStr.split("&");
  318. var obj = {};
  319. for (var i = 0; i < array.length; i++) {
  320. var arr = array[i].split("=");
  321. var value = arr[0];
  322. if (!obj.hasOwnProperty(value)) {
  323. if (arr[1]) {
  324. obj[value] = arr[1];
  325. } else {
  326. obj[value] = null;
  327. }
  328. }
  329. }
  330. return obj[name];
  331. }
  332. function trim(str) { //去除字符串两边空白
  333. return str.replace(/^\s+|\s+$/g, "");
  334. }
  335. var Cookie = { //cookie对象
  336. //读取
  337. read: function (name) {
  338. var cookieStr = "; " + document.cookie + "; ";
  339. var index = cookieStr.indexOf("; " + name + "=");
  340. if (index != -1) {
  341. var s = cookieStr.substring(index + name.length + 3, cookieStr.length);
  342. return decodeURIComponent(s.substring(0, s.indexOf("; ")));
  343. } else {
  344. return null;
  345. }
  346. },
  347. //设置
  348. set : function (name, value, expires) {
  349. var expDays = expires * 24 * 60 * 60 * 1000;
  350. var expDate = new Date();
  351. expDate.setTime(expDate.getTime() + expDays);
  352. var expString = expires ? "; expires=" + expDate.toGMTString() : "";
  353. var pathString = ";path=/";
  354. document.cookie = name + "=" + encodeURIComponent(value) + expString + pathString;
  355. },
  356. //删除
  357. del : function (name) {
  358. var exp = new Date(new Date() - 1);
  359. var s = this.read(name);
  360. if (s != null) {
  361. document.cookie = name + "=" + s + ";expires=" + exp.toGMTString() + ";path=/";
  362. }
  363. ;
  364. }
  365. }