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