zoukankan      html  css  js  c++  java
  • Script/_Config.js

    /* 系统设置
     *
     * 每个项目均应单独建立该文件
     *
     * 2006-04-14 黄宗银
     * */

    /// Apq 框架设置 ------------------------------------------------------------------------------------------------------------------------------
    window.Apq$Config = {
     // 调试
     DEBUG: false,

     // Apq 脚本库根目录
     Apq: "/Apq(分布版)/",

     // 起始页面地址
     Home: "/Apq/User/"
    };
    /// 以下一般不用修改 --------------------------------------------------------------------------------------------------------------------------
    /// 检测 MsXml 6.0
    function MsXml_Test()
    {
     try
     {
      window.Apq$jsxh = new ActiveXObject( "Msxml2.XmlHttp.6.0" );
     }
     catch(e)
     {
      if( window.confirm( '系统需要启用 ActiveX 运行权限,请检查安全设置.\n\n' +
       '同时还需要安装Microsoft XML 分析器 MSXML 6.0\n' +
       '如果你未安装,请点击"确定"打开下载\n' +
       '注意:安装后可能需要重新打开IE' ) )
      {
       window.open( "http://download.microsoft.com/download/2/e/0/2e01308a-e17f-4bf9-bf48-161356cf9c81/msxml6.msi" );
      }
      return false;
     }
     return true;
    }

    /// eval 扩展 ---------------------------------------------------------------------------------------------------------------------------------
    /// 用无参匿名函数的形式,以指定上下文运行代码
    window.anonymous = function( str, o ){
     var fn = new Function( str );
     fn.call( o );
    };

    /// 在指定窗口 添加/运行 脚本
    window.__eval = function( win, str ){
     if( win.document.readyState == "complete" || Apq$Config.DEBUG )
     {
      // 该方式 ViewPage 插件看不到源代码,但调试可见
      win.eval( str );
     }
     else
     {
      // 该方式调试时看不到源代码,一定程度上实现了程序逻辑的隐藏
      win.document.writeln( '<script type="text/jscript">' );
      win.document.writeln( str );
      win.document.writeln( '<\/script>');
     }
    };

    // 初始化脚本容器
    window.Apq$jsContainer = {};

    /// 系统初始化,需且仅需运行一次(系统已自动处理)
    window.Apq_Init = function()
    {
     // 保证只运行一次
     if( window.Apq )
     {
      return;
     }

     window.Apq$ = window.parent.Apq$ || window; // 保存框架窗口引用
     
     // 表示以本窗口为顶级引入 Apq 框架
     if( window.Apq$ == window )
     {
      window.Apq = {
       "__key": "namespace",
       "__type": "Apq"
      };

      // 将最基本的脚本文件( prototype, Apq )导出到指定窗口
      Apq.Export = function( win, ns ){
       if( ns != "prototype" && ns != "Apq" )
       {
        return;
       }
       if( Apq$jsContainer[ns] )
       {
        __eval( win, Apq$jsContainer[ns] );
        return;
       }
       
       if( !window.Apq$jsxh && !MsXml_Test() )
       {
        return;
       }
       Apq$jsxh.open( "GET", Apq$Config.Apq + ns + ".js", false );
       Apq$jsxh.send();
       if( Apq$jsxh.status == 200 )
       {
        Apq$jsContainer[ns] = Apq$jsxh.responseText;
        __eval( win, Apq$jsContainer[ns] );
        return;
       }
       throw new Error( Apq$jsxh.status, Apq$jsxh.statusText );
      };
     }

     // 非 Apq.aspx 页面,则从主框架页导入 Apq 框架
     if( !window.Apq$main )
     {
      Apq$.Apq.Export( window, "prototype" );
      Apq$.Apq.Export( window, "Apq" );
     }
     
     // 调试模式时提示所有运行异常
     if( Apq$Config.DEBUG )
     {
      window.onerror = function(sMsg,sUrl,sLine){
       alert( "\t运行时错误\n行数:" + sLine + "\n信息:" + sMsg + "\n网址:" + sUrl );
      };
     }
    };

    // 非 Apq.aspx 页面时立即初始化
    if( !window.Apq$main )
    {
     window.Apq_Init();
    }

  • 相关阅读:
    ASP.Net Cms
    GetHashCode函数所存在的陷阱
    NH的系统架构
    Icomparable<T> 和 Icomparaer<T> 实现顺序关系
    《创业法典》:用流程图告诉你如何创业
    创业之前,网站先行
    杨卫华:新浪微博的架构发展历程
    技术开发人员为什么会无奈苦逼?
    使用面向对象的、完整的单点登录功能
    SilverLight之我见
  • 原文地址:https://www.cnblogs.com/Apq/p/425518.html
Copyright © 2011-2022 走看看