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