跟踪javascript运行时错误

跟踪javascript运行时错误,javascript,error-handling,Javascript,Error Handling,有没有办法捕获所有类型的控制台错误? 实际上,我想将所有控制台错误存储到数据库中,以便修复PHP网站的严重问题 这是我当前捕获错误的代码,但这段代码没有捕获内部服务器错误和其他类型的错误,如 www.widgetapi.js:99未能在“DOMWindow”上执行“postMessage”: 提供的目标原点(“”)不匹配 收件人窗口的来源 我当前的脚本 function ErrorSetting(msg, file_loc, line_no) { var e_msg=msg; v

有没有办法捕获所有类型的控制台错误? 实际上,我想将所有控制台错误存储到数据库中,以便修复PHP网站的严重问题

这是我当前捕获错误的代码,但这段代码没有捕获内部服务器错误和其他类型的错误,如

www.widgetapi.js:99未能在“DOMWindow”上执行“postMessage”: 提供的目标原点(“”)不匹配 收件人窗口的来源

我当前的脚本

function ErrorSetting(msg, file_loc, line_no) {
    var e_msg=msg;
    var e_file=file_loc;
    var e_line=line_no;
    var   error_d = "Error in file: " + file_loc +
                        "\nline number:" + line_no +
                         "\nMessage:" + msg;
    if(logJsErrors){
        theData = "file="+file_loc+"&line="+line_no+"&err="+msg;

        ajaxCtrl(
            function(){
                return true;
            },Helpers.RootURL()+"/logs/index",theData
        );
    }

    if(isDebugging){
        console.error(error_d);
    }

    return true;
}
window.onerror = ErrorSetting;
我真的很感谢你的努力。
谢谢:)

您可以执行一种
console.log
的原型,当您调用
console.log
时,会触发ajax,因此您可以执行如下操作:

(function () {
        var postCons = console.log;
        console.log = function (err) {
            var xhttp = new XMLHttpRequest();
            postCons.apply(this, arguments);
            xhttp.open("POST", "log.php", true);
            xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            xhttp.onreadystatechange = function () {
                if (this.readyState == 4 && this.status == 200) {//you could avoid this step
                    alert(this.responseText);//response from php
                }
            };
            xhttp.send("data="+encodeURI(err));
        }
    })()

log.php
中,您可以使用
$\u POST['data']
做任何您想做的事情,您可以使用类似
urldecode($\u POST['data'])

你好,谢谢您的回复。我已经在ajaxCtrl()函数中这样做了。所以,我不明白,因为如果将此函数放在作用域的顶部,则会存储所有控制台日志。但是如果你想存储所有的php错误,你应该使用这样的错误处理程序