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

  • 相关阅读:
    navigateTo防止多次跳转
    vue中的绑定class和微信小程序中的绑定class的区别
    js同步和异步
    本地存储和vuex使用对比
    微信小程序页面跳转区别总结
    CAS-技术专区-认证服务器cas-server搭建
    CAS-技术专区-SSO配置完整案例(静态认证+数据库认证)
    SpringCloud-技术专区-实战案例-Zuul整合OAuth2.0认证服务
    OAuth2.0协议专区-SpringCloud安全-集成OAuth2实现身份认证和单点登录
    OAuth2.0协议专区-SpringCloud微服务实战-基于OAUTH2.0统一认证授权的微服务基础架构
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/2284003.html
Copyright © 2011-2022 走看看