zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    Libevent源码分析系列
    TCP检验和
    Redis—数据结构之list
    STL—list
    STL—vector
    STL—vector空间的动态增长
    STL—内存的配置与释放
    Actuator 未授权访问之heapdump利用
    Git submodule update 命令执行
    利用Haproxy搭建 HTTP 请求走私(Request smuggling)环境
  • 原文地址:https://www.cnblogs.com/oceanho/p/4897410.html
Copyright © 2011-2022 走看看