建立一个 MFC Dialog 工程,在选择对话框类型时选择 HtmlDialog,然后我们就可以建立一个基于 Web 页面的对话框,只要在 OnInitDialog 中加入  Navigate(L"http://www.163.com");,便可以直接打开网易首页(不 Navigate 的话,默认会打开工程目录下的ProjectName.htm 文件)
    现在我的问题是,打开的 Html 页面中的 js 代码如何调试呢?
    代码示例:
<html>
<head>
  <script type="text/javascript">
    function onClick(events) {
      alert(1);
    }
  </script>
</head>
<body id=cabcddlg bgcolor=lightgrey><table width=100%>
<tr>
<td align=right>
<button style="width:100" id="buttonok" onclick="javascript:onClick()">ok</button><br>
<button style="width:100" id="buttoncancel">cancel</button>
</td>
</tr>
<tr width=100% height=75>
<td align=center valign=bottom>
todo: place controls here.
</td>
</tr>
</table></body>
</html>
    点击 Web 页面中的 OK 按钮后,会弹出一个 MessageBox。如果我的函数 onClick 非常复杂,则需要调试其中的代码,怎样才能调试到其中的 js 代码呢?
    注:不能使用 IE 来调试 Html 文件,因为我的 MFC CHtmlDialog 中做了很多其他的事情,用 IE 不能正常运行。

解决方案 »

  1.   

    这个例子是必须的。http://www.codeproject.com/KB/COM/jscalls.aspx主要是CWebPage的使用。 可以看链接的demo。
      

  2.   

    一个进程只能有一个调试会话,VC代码和脚本代码不能同时调试,要调试脚本,必须用正常方式启动应用程序,不能在IDE下按F5。同时在脚本中需要设置断点的地方添加一句 debugger;,当这个语句被执行到时,系统会询问你是否启动调试,选择是就会用已有的或者新建的VS调试器进入调试环境,并且中断在debugger语句处。剩下的事情就是单步执行了。
      

  3.   

    可以让你的程序启动起来,同时弹出一个MessageBox等,然后用VS编译器attach上去,然后编译器打开你的JS,文件,同时设置断点调试
      

  4.   

    恩,这个例子功能很强大,可以用来研究IE提供的为Reuse功能,但我目前最大的问题是怎样调试js,这个例子并没有讲到,我去尝试调试时,在js中下断点,也不能断下来。
      

  5.   

    在 js 中加入 debugger; 语句可以在使用 IE 打开页面时弹出对话框,询问是否要调试。但如果使用 MFC 的 CDHtmlDialog 来打开页面的话,则不会弹出提示,也即无法成功进行调试了,请问在这种情况下,需要进行什么特别的设置不?
      

  6.   

    这样好像不行,我在网页中加入了alert,MessageBox是弹出来了,但Attach后,并不能断下来,当然我也在js中下了断点。
      

  7.   

    把IE属性中的,Disable调试两个选项的勾都去掉
      

  8.   

    恩,按照你的说法设置之后便可以进行调试了,不过有个问题补充一下:
    使用alert弹出对话框,然后Attach进去并不能断下来,我目前机器是这种情况,可能某些设置不正确吧。
    使用上面说的debugger,语句可以让程序中断,然后就可以调试了,很方便。