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

posted @ 2006-06-14 10:44  Amwpfiqvy  阅读(267)  评论(0编辑  收藏  举报