調(diào)試和腳本庫 因為腳本對象本身是用腳本編寫的,調(diào)試你編寫的和腳本對象模型相互作用的腳本可能就很復(fù)雜,這有以下幾個原因:
首先,當(dāng)你利用調(diào)試器單步執(zhí)行你自己的腳本時,你可能會進入不熟悉的并且非常復(fù)雜的腳本庫代碼中。其次,如果在腳本庫內(nèi)部發(fā)生了一個錯誤,單步執(zhí)行它可能會是冗長乏味的,并且還不一定能幫你查明錯誤。最后,有時追隨事件次序及腳本和腳本對象模型之間的控制流可能是很困難的。
現(xiàn)在,你可以利用下面這些腳本對象模型調(diào)試選項在這些環(huán)境下調(diào)試你的應(yīng)用程序:
捕捉低層錯誤(Catch low-level errors)--如果一個腳本對象如Recordset,遇到一個錯誤,它可能會利用詳細(xì)的錯誤消息來警告你。這個選項幫你利用可能會由于外部原因而失敗的組件來找到錯誤。 跟蹤事件(Trace events)--你可能會讓頁面顯示一個當(dāng)它們發(fā)生時觸發(fā)的事件列表。這個選項幫助你查看和腳本對象模型事件相關(guān)的腳本將在什么時候執(zhí)行。 跟蹤警告(Trace warnings)--你可能會看到描述可能發(fā)生的錯誤的警告消息,但有些錯誤是沒有警告消息,它們通常是悄悄地發(fā)生。這個選項幫你發(fā)現(xiàn)像那些由于向方法傳遞無效參數(shù)而產(chǎn)生的錯誤。 使腳本對象能夠進行調(diào)試 當(dāng)你利用Visual Studio 6.0, Service Pack 3及更高版本創(chuàng)建一個新的ASP頁時,ASP頁在頂部包含一個腳本塊,在這個腳本塊中有調(diào)試選項。
注意 對于那些在安裝Service Pack 3及更高版本之前創(chuàng)建的項目,你必須把新的腳本庫文件拷貝到你的項目中。
缺省情況下,選項是關(guān)閉的。腳本塊一般如下:
<SCRIPT id=DebugDirectives runat=server language=javascript> // Set these to true to enable debugging or tracing @set @debug=false @set @trace=false </SCRIPT>
注意:腳本對象調(diào)試要求服務(wù)器上正在運行Microsoft JScript 5.0或更高版本。你可以從Microsoft Visual InterDev 6.0 CD將JScript 5.0安裝到服務(wù)器上,也可以從微軟腳本網(wǎng)站上得到,站點位于http://msdn.microsoft.com/scripting/default.htm。
為了能夠進行調(diào)試,就要對你想要變成true的選項進行設(shè)置。例如,要捕捉低層錯誤,腳本塊更改如下:
<SCRIPT id=DebugDirectives runat=server language=javascript> // Set these to true to enable debugging or tracing @set @debug = true @set @trace = false </SCRIPT>
注意:調(diào)試選項塊必須在ASP頁的頂部緊接著@language指令出現(xiàn)。
你一共可以設(shè)置四個選項,如下表所示。有關(guān)單獨(individual)設(shè)置的詳細(xì)資料在這個主題的后面部分介紹。
選項 說明 @debug 在特定的腳本對象中報告選定的錯誤。 @trace 打開下面兩個跟蹤選項。 @trace_events 打開事件跟蹤。 @trace_warnings 打開通常悄悄發(fā)生的可能錯誤的警告信息。
注意:如果你將@trace設(shè)置為true,它將覆蓋@trace_events 和 @trace_warnings的設(shè)置。但是,如果@trace是false,你可以單獨開關(guān)每個跟蹤選項。 單獨跟蹤選項不是ASP頁中缺省腳本塊的一部分,因此如果你想單獨設(shè)置必須另外加入它們。例如,如下代碼只使事件跟蹤有效而關(guān)閉警告:
<SCRIPT id=DebugDirectives runat=server language=javascript> @set @debug = false @set @trace = false @set @trace_events = true </SCRIPT>
如果你使用的是Microsoft Internet Explorer 4.x,設(shè)置任何@trace選項都將會覆蓋BODY標(biāo)記,這會使BODY標(biāo)記中的事件綁定(binding)無效,屬性被忽略。如果你用的是Internet Explorer 5.0就不會發(fā)生這個問題。
如下類型的事件聯(lián)結(jié)在Internet Explorer 4.0中不會工作:
<BODY onload="initialize()"> 為了解決這個局限,就要采用一個不同的綁定機制。如果你用的是Visual Basic, Scripting Edition (VBScript),你可以使用隱式(implicit)綁定
<SCRIPT LANGUAGE="VBScript"> Function window_onload() initialize() End Function </SCRIPT>
如果你用的是JavaScript,你可以調(diào)用一個全局腳本,這個腳本將一個函數(shù)指針分配給一個窗口對象事件,代碼如下:
<SCRIPT LANGUAGE="JavaScript"> window.onload = initialize </SCRIPT>
如果當(dāng)前的BODY標(biāo)記包含屬性,你應(yīng)該在腳本中通過設(shè)置文檔對象的屬性來代替。例如,如果BODY標(biāo)記目前包含屬性BGCOLOR="#FFFF00",你可以利用如下的腳本來設(shè)置它。當(dāng)文檔首次裝載時利用上面列出的技術(shù)去調(diào)用這個腳本。
<SCRIPT LANGUAGE="JavaScript"> function initialize(){ document.bgColor = "#FFFF00"; } </SCRIPT>
|