• 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);
    };
     

  • 相关阅读:
    iOS 9适配技巧(更新版)
    VC/MFC 在ListCtl 控件中随鼠标移动提示单元格信息
    VC++ 编译libcurl 支持SSL,GZIP
    qt使用动态库(DLL)
    解决修改mysql的data_dir所引发的错误
    Mybatis实战之TypeHandler高级进阶
    Mybatis实战之自定义TypeHandler处理枚举
    shell编程其实真的很简单(五)
    shell编程其实真的很简单(四)
    shell编程其实真的很简单(三)
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/2284003.html
Copyright © 2020-2023  润新知