如何调试使用 RegisterClientScriptBlock 方法注册的 Javascript 代码

3
我有许多现有的脚本需要调试,这些脚本都是从代码后台嵌入的。
我更喜欢使用Visual Studio 2008客户端调试功能,但断点只能在aspx文件中的脚本块内设置。
问题在于,我无法在脚本上设置断点,因为它们都是从代码后台文件(而不是aspx文件)注册的。使用ClientScriptManager.RegisterClientScriptBlock Method (Type, String, String, Boolean)将脚本添加到页面中。
以下是一个示例(它没有损坏,只是演示如何将其添加到页面中)。
if (!cs.IsClientScriptBlockRegistered(cstype, csname2))
{
  StringBuilder cstext2 = new StringBuilder();
  cstext2.Append("<script type=\"text/javascript\"> function DoClick() {");
  cstext2.Append("Form1.Message.value='Text from client script.'} </");
  cstext2.Append("script>");
  cs.RegisterClientScriptBlock(cstype, csname2, cstext2.ToString(), false);
}

是否有可能在不必将测试页面中的每个脚本都拿出来的情况下进行调试?

编辑:谢谢


1
当然可以 - IE开发者工具和Firebug都可以做到这一点。 - Marko
明天我打算尝试一下IE开发工具,我看到了“脚本”选项卡,但主要使用HTML和CSS功能。它似乎将大量代码放在单个断点的一行上,不管怎样,明天我会用真实的页面试试看。 - GenEric35
1个回答

4

你需要在代码中添加debugger;指令。类似于这样:

 cstext2.Append("<script type=\"text/javascript\"> function DoClick() {debugger;");
 cstext2.Append("Form1.Message.value='Text from client script.'} </");
...

此外,您需要根据以下步骤调整IE设置:
工具-> Internet选项->高级。 确保未选中“禁用脚本调试(其他)”和“禁用脚本调试(Internet Explorer)”。
现在,如果调用DoClick方法,将生成一个特殊的异常,并提示您运行新的VS实例,在那里您将能够调试脚本。
希望这能帮到您。

这可能正是我需要在这种情况下使用Visual Studio调试的东西,明天我会尝试一下,谢谢! - GenEric35
确认无误,非常有效。只有一个小问题曾让我搜索了一下,就是当IE提示您启动VS时,我允许它附加,然后按继续让它完成,然后刷新我的网页,Visual Studio就会打开文档,在我设置断点的那一行暂停。再次感谢。 - GenEric35

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接