Javascript全局错误处理(不适用于ie9)


Javascript global error handling (not work on ie 9)

我想捕捉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上的脚本调试

  1. 在Internet Explorer中,从"工具"菜单中选择"Internet选项"
  2. 在"Internet选项"对话框中,单击"高级"选项卡
  3. 在"高级"选项卡的"浏览"下,清除"禁用脚本调试"
  4. 单击"确定"