第一个:_Config.js

第一个:框架配置
主要对Apq框架进行设置,如果页面涉及frame/ifram,同时标识引入Apq的最外层window。

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


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

    
// Apq 脚本库根目录
    Apq: "/Apq/",

    
// 起始页面地址
    Home: "/OurWords/User/"
}
;
/// 以下一般不用修改 --------------------------------------------------------------------------------------------------------------------------
//
/ 检测 MsXml 
function MsXml_Test()
{
    
try
    
{
        
try
        
{
            window.Apq$jsxh 
= new XMLHttpRequest();
        }

        
catch(e)
        
{
            window.Apq$jsxh 
= new ActiveXObject( "MsXml2.XMLHttp" );
        }

    }

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

        
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$ && Apq$.Apq )
    
{
        
return;
    }


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

        
// 将最基本的脚本文件(Apq)导出到指定窗口
        Apq.Export = function( win, ns ){
            
if( ns != "Apq" && ns != "Apq.Debug" )
            
{
                
return;
            }

            
if( Apq$jsContainer[ns] )
            
{
                __eval( win, Apq$jsContainer[ns] );
                
return;
            }

            
            
if!window.Apq$jsxh && !MsXml_Test() )
            
{
                
return;
            }

            
var url = Apq$Config.Apq + ns + ".js";
            
if( Apq$Config.DEBUG )
            
{
                url 
+= "?t=" + Math.random()
            }

            Apq$jsxh.open( 
"GET", url, 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( Apq$Config.DEBUG || !window.Apq$main )
    
{
        Apq$.Apq.Export( window, 
"Apq" );
    }

    
    
if( Apq$Config.DEBUG )
    
{
        Apq$.Apq.Export( window, 
"Apq.Debug" );
        
        
// 调试模式时提示所有运行异常
        window.onerror = function(sMsg,sUrl,sLine){
            Apq.Debug.writeln( 
"\t运行时错误\n行数:" + sLine + "\n信息:" + sMsg + "\n网址:" + sUrl );
        }
;
    }

}
;

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

posted @ 2006-12-21 22:48  Amwpfiqvy  阅读(353)  评论(0编辑  收藏  举报