script通过script标签跨域加载数据
1 /********************************************************** 2 3 说明:跨域请求数据Javascript组件 4 ---------------------------------------------------------- 5 add by OceanHo 2015-4-13 18:18:14 6 **********************************************************/ 7 ; (function (window, undefined) { 8 9 var _ap = function () { 10 }, _asyncID = 2048, _asyncType = "asynctype", _version = "1.5.0", _cbKey = "cb", _cb = ""; 11 12 13 function addSc(url, cbAndParam) { 14 var script = createSc(); 15 script.setAttribute("src", url + "?" + cbAndParam); 16 window.document.getElementsByTagName("head")[0].appendChild(script); 17 }; 18 19 function delSc(id) { 20 var scripts = getSc(); 21 for (var i = 0; i < scripts.length; i++) { 22 if (scripts[i].attributes["id"]) { 23 if (parseInt(scripts[i].attributes["id"].value) === parseInt(id)) { 24 remove(scripts[i]); 25 } 26 } 27 } 28 }; 29 30 function remove(script) { 31 if ((script) && (script.parentNode)) { 32 script.parentNode.removeChild(script); 33 } 34 }; 35 36 function clearSc() { 37 var scripts = getSc(); 38 for (var i = 0; i < scripts.length; i++) { 39 remove(scripts[i]); 40 } 41 }; 42 43 function getSc() { 44 var s1 = []; 45 var scripts = window.document.getElementsByTagName("script"); 46 for (var i = 0; i < scripts.length; i++) { 47 if (scripts[i].attributes["async"]) { 48 if (scripts[i].attributes["async"].value === _asyncType) { 49 s1.push(scripts[i]); 50 } 51 } 52 } 53 return s1; 54 }; 55 56 function createSc() { 57 58 _asyncID++; 59 var script = window.document.createElement("script"); 60 script.setAttribute("id", _asyncID); 61 script.setAttribute("async", _asyncType); 62 script.setAttribute("type", "text/javascript"); 63 64 script.onload = script.onreadystatechange = function () { 65 66 if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") { 67 68 delSc(this.attributes["id"].value); 69 70 script.onload = script.onreadystatechange = null; 71 } 72 } 73 return script; 74 } 75 76 function waitDel(id, interval) { 77 window.setInterval(delSc(id), interval); 78 }; 79 80 _ap.fn = _ap.prototype = { 81 constructor: _ap, 82 version: _version, 83 init: function (arg) { 84 return new _ap().constructor; 85 }, 86 87 get: function (url, cbk, cb, param) { 88 if (!cb) cb = _cb; 89 if (!cbk) cbk = _cbKey; 90 var qs = this.map(',', param); 91 addSc(url, _cbKey + "=" + cb + "&" + qs); 92 }, 93 94 getEasy: function (url, cb, param) { 95 if (!cb) cb = _cb; 96 var qs = this.map(',', param); 97 addSc(url, _cbKey + "=" + cb + "&" + qs); 98 }, 99 100 getCustom: function (url, param) { 101 addSc(url, this.map(',', param)); 102 }, 103 104 map: function (split, params) { 105 var str, strs = []; 106 if (typeof params != "string") { 107 params = eval(params); 108 for (var p in params) { 109 strs.push(p + "=" + params[p]) 110 } 111 str = strs.join(split); 112 } else { 113 str = param; 114 } 115 return str; 116 }, 117 clear: function () { clearSc(); } 118 }; 119 120 _ap.fn.init.prototype = _ap.fn; 121 122 window.CrossLoad = _ap.fn.init(); 123 124 })(window); 125 126 127 128 129 // 使用 、 130 <script> 131 window.CrossLoad.getEasy("https://www.oceanho.com/common/chat/v2","ReciveMessageHandler",{}) 132 133 function ReciveMessageHandler(msg){ 134 135 } 136 </script>