我想捕捉javascript和日志服务器端的每一个错误。
core.js(在第一行)
// Global error javascript log
window.onerror = function(msg, url, line)
{
try
{
// Send error to server via AJAX Request
var x = new (this.XMLHttpRequest || ActiveXObject)('MSXML2.XMLHTTP.3.0');
x.open('POST', '/jserrorlog.php', 1);
x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
x.send('Msg='+msg+'&Url='+url+'&Line='+line);
x.onreadystatechange = function(){
if(x.readyState > 3 && x.status == 200)
window.console && console.log(x.responseText);
};
}
catch(e)
{
window.console && console.log(e);
}
};
jserrorlog.php(服务器端)
<?php
// log error on server
$Msg = (isset($_POST['Msg'])) ? $_POST['Msg'] : null;
$Url = (isset($_POST['Url'])) ? $_POST['Url'] : null;
$Line = (isset($_POST['Line'])) ? $_POST['Line'] : null;
echo ( error_log('Javascript Error:'.$Msg.'; Url:'.$Url.'; Line:'.$Line) ) ? 1 : 0;
来源:http://msdn.microsoft.com/en-us/library/ms976144.aspx
通过窗口处理错误。错误DHTML事件
困扰许多开发人员的一个常见问题是,当他们的oneror未调用处理程序,因为它们已为启用脚本调试Internet Explorer。如果您有已安装Microsoft脚本调试器或Microsoft Visual Studio6.0®(特别是Visual InterDev 6.0™)—oneror处理是这些产品启动调试器的方式。可以禁用的脚本调试的"高级"选项卡上的给定Internet Explorer实例"Internet选项"对话框(请注意,选中"禁用"脚本调试设置将仅应用于该Internet实例Explorer)
禁用脚本调试以调用您自己的oneror处理程序
从这次讨论中应该可以清楚地看到,您可以同时掌握这两种语法以及使用window.onerror处理程序的运行时错误。然而,我只是告诉你这是为了让你了解它是如何工作的,而不是这样您可能有意允许在生产Web中出现语法错误页面。在开发阶段。此外,oneror处理甚至不适用于VBScript语法错误(如下所述),并且无法捕获任何语言的服务器端语法错误。
禁用IE上的脚本调试
- 在Internet Explorer中,从"工具"菜单中选择"Internet选项"
- 在"Internet选项"对话框中,单击"高级"选项卡
- 在"高级"选项卡的"浏览"下,清除"禁用脚本调试"
- 单击"确定"