row*_*ow1 8 javascript internet-explorer
我正在尝试调试一个非常复杂的IE Intranet应用程序.我收到一条警告,其中包含一条自定义消息,指出发生了异常.我想了解有关此异常的更多信息,因为消息不是很有帮助.
有一个包含大量iFrame的母版页(如果有所不同,则为.htc文件)所以我不认为我可以尝试劫持window.alert.我的最后一招是尝试文件搜索.
使用IE 8,无论如何我可以检测到此警报的来源?理想的解决方案是以某种方式创建一个"breakOnAlert"函数,该函数在正确的警报位置插入debbuger语句.
澄清一下:主页面包含许多iframe,我相信错误+警报来自其中一个.每个iframe都是一个aspx页面(有时使用来自用户的动态html/javascript)并包含内联和外部JavaScript.在发布之前,我确实尝试在我的页面中覆盖警报(iframe中的子页面),但它不起作用.我假设它不起作用,因为每个iframe都有自己的窗口对象,所以它们每个都有自己的警报版本.为了实现这个目的,我需要找到所有的iframe并为每个iframe覆盖它,我觉得这样做很复杂.在IE开发人员工具中,我可以看到大量的脚本文件(内联和外部),因此在那里手动查找警报非常困难.
因为在所有iframe中都是一件真正的苦差事,所以我可能会使用Fiddler并以编程方式替换alert(为:
(function(n){alert(n);debugger;})(
Run Code Online (Sandbox Code Playgroud)
IE应该支持该debugger语句,因此你有一个调用堆栈
本页介绍了如何在Fiddler中进行文本替换
要添加到的Fiddler自定义规则示例OnBeforeResponse:
if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "html"))
{
oSession.utilDecodeResponse();
var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);
oBody = oBody.replace(/alert\(/gi, "(function(n){alert(n);debugger;})(");
oSession.utilSetResponseBody(oBody);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2312 次 |
| 最近记录: |