zoukankan      html  css  js  c++  java
  • qq网站里动态加载脚本的实现

    function JsLoad(sUrl ,options){

        options = options || {};


        if(!options.sId) options.sId = 'jsload_'+Math.random();

        if(!options.varname) options.varname = 'datav4';
                
        var sId = 'jsload_'+options.sId;
        
        if(AppTui.$(sId)!='undefined'&&AppTui.$(sId)!=null){
            AppTui.$(sId).parentNode.removeChild(AppTui.$(sId));
        }
        var _script = document.createElement("script");
        _script.setAttribute("id", sId);
        _script.setAttribute("type", "text/javascript");
        _script.setAttribute("src", sUrl);
        document.getElementsByTagName("head")[0].appendChild(_script);
        
        if (!!document.all) {// IE
            _script.onreadystatechange = function(){
                var responseText = null;
                if (this.readyState == "loaded" || this.readyState == "complete") {
                    if(options.completeListener) {
                        try{
                            responseText = eval('('+options.varname+')');
                            if(typeof responseText != null){
                                options.completeListener(responseText);
                            }else{
                                if(options.errorListener) {
                                    options.errorListener();
                                }
                            }
                        }
                        catch(e)
                        {
                            if(options.errorListener)
                            {
                                options.errorListener();
                            }
                        }
                    }
                    _data=null;
                    if(AppTui.$(sId)!='undefined'&&AppTui.$(sId)!=null){
                        AppTui.$(sId).parentNode.removeChild(AppTui.$(sId));
                    }
                }
            };
        }
        else {// FF
            _script.onload = function(){
                
                var responseText = null;
                if(options.completeListener) {
                    try{
                        responseText = eval('('+options.varname+')');
                        if(typeof responseText!=null){
                            options.completeListener(responseText);
                        }else{
                            if(options.errorListener) {
                                options.errorListener();
                            }    
                        }
                    }
                    catch(e)
                    {
                      if(options.errorListener) {
                            options.errorListener();
                        }
                    }
                }
                _data=null;
                //alert( sId );
                
                if(AppTui.$(sId)!='undefined'&&AppTui.$(sId)!=null){
                    AppTui.$(sId).parentNode.removeChild(AppTui.$(sId));
                }
            };
        }
    };

    其中AppTui的定义如下:

    if (typeof AppTui == "undefined")
    {
        var AppTui = new Object();
    }

    AppTui.$ = function(s)
    {
        return (typeof s == "object") ? s: document.getElementById(s);
    };
     

  • 相关阅读:
    P3193 [HNOI2008]GT考试(KMP+矩阵乘法加速dp)
    P2606 [ZJOI2010]排列计数
    洛谷P2657 [SCOI2009]windy数
    P2602 [ZJOI2010]数字计数(递推)
    洛谷 P1073 最优贸易
    [一本通学习笔记] 字典树与 0-1 Trie
    [一本通学习笔记] KMP算法
    [一本通学习笔记] 字符串哈希
    [一本通学习笔记] 广度优先搜索和优化
    [一本通学习笔记] 深度优先搜索与剪枝
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/2284003.html
Copyright © 2011-2022 走看看