第五十七章 CSP的常见问题 - 如何调试CSP页面?
如何调试CSP页面?
不要用Debug
> View Breakpoints
来设置断点,因为这似乎容易出错。
- 要调试
CSP
页面,必须检查选项工具>选项>编译器>保留生成的源代码。 - 打开工作区窗口,将
CSP
页面添加到CSP
文件夹中(如果它们还不在那里)。 - 编译
CSP
,然后单击工具栏中的“查看其他代码”图标(或选择“查看”>“查看其他代码”)。这使可以看到.cls
和.int
文件。例如,文件A.CSP
生成CSP。CSP.1.INT
和CLS
。 - 在
.cls
或者.int
文件中,右键单击需要断点的代码行,然后选择“调试”>“断点”>“切换断点”(或者选择该行并按F9)。 - 选择调试>调试目标>
ZEN
或CSP
页面。从下拉列表中,选择调试器将在其上运行的目标CSP
页面,然后单击确定。(如果将CSP
拖到工作区窗口,它们会出现在下拉列表中。) - 单击调试工具栏上的开始。
比如你有一个操作流程:A
-> B
;也就是说,显示页面A
,然后通过链接访问页面B。如果页面B
中有一个bug
,应该执行以下操作:
- 检查
A.CSP
和B.CSP
是否在工作区窗口中。 - 两者都编译。
- 选择视图>工具栏>调试以打开调试工具栏。
- 选择调试>调试目标>
ZEN
或CSP
页面。从下拉列表中,选择一个.CSP
,然后单击确定。 - 打开
B.CSP
并选择查看>查看其他代码以打开csp.B.CLS
。 - 在
csp
中。B.CLS
,右键单击OnPageBODY()
方法中的第一行,然后选择调试>断点>切换断点。 - 单击调试工具栏上的开始。
- 将显示页面
A
。 - 单击链接打开页面
b
。 - 调试器在
B
中的断点处停止
为什么下面的代码不能编译?
<script language="Cache" runat="server">
write "<script language=javascript>", !
write "int x = 10; alert(x);", !
write "</script>"
</script>
在脚本标记中使用runat="server
"编译CSP
页面时,编译器运行ObjectScript
并将其转换为HTML
以在页面上显示。但是,在遇到< script language = " cache " runat = " server " >
标记后,它会查找</script>
end
标记来表示ObjectScript
代码的结束,在本例中,它会在write
语句中找到该标记。要编译它,请将</script >
标记分成两个write
语句:
<script language="Cache" runat="server">
write "<script language=javascript>", !
write "int x = 10; alert(x);", !
write "</script",">", !
</script>
当我使用&js<alert("Error!");>
要显示警告框,文本alert("Error!")
而不是警告框。为什么?
可以将这一行放在runat="server "
代码段或从runat="server "
块调用的方法中。要在页面加载时执行JavaScript
,添加<script language="javascript ">
标记,如前一个答案所示。
代码&js<alert("Error!")>
在服务器端方法内部工作,该方法通过加载页面中的JavaScript
事件调用。
如何在警报消息中包含ObjectScript
变量?
使用#()#
语法。从ObjectScript
方法内部,尝试如下操作:
s error = "Bad password"
&js<alert(#(..QuoteJS(error))#);>
%CSP.Page
类提供的QuoteJS
方法返回正确引用的JavaScript
字符串。它还正确地转义返回结果中包含的任何引号。