dmitry111,
Моя ошибка - не написал для чего все это. Для того чтобы отправить сведения об ошибке на сервер для логирования. То есть я пишу в коде triggerError('ошибка!') и все. Дальше я хочу чтобы эта функция передала на сервер не только текст ошибки, но и файл/строку, где была вызвана. Цитата:
Цитата:
|
|
Hapson, тебе не ошибки нужны, а пользовательские события. Можешь использовать
Цитата:
Observer, CustomEvent, ... |
dmitry111, передать не проблема, тема о trigger_event, проблема в том, что dispatchить свою ошибку не получается.
|
dmitry111,
я уже переопределил window.onerror и написал функционал отправки/логирования. Теперь нужно написать функцию-аналог trigger_error из php. Вот что есть (function(){window.onerror = ErrorHandler; /*** SETTING ***/ var url = window.location.protocol +"//"+ window.location.hostname +"/phpHandlerJSError.php"; var debug = true; var serverLog = true; function ErrorHandler(message, file, line){ if(!!serverLog){sendError(message, file, line);} return !!debug ? false : true; } function sendError(message, file, line){ var xhr = getXHR(); var param = "message="+ encodeURIComponent(message) +"&"; param += "file="+ encodeURIComponent(file) +"&"; param += "line="+ encodeURIComponent(line); xhr.open("POST", url, true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("HTTP_X_FORWARDED_FOR", "XmlHttpRequest"); /* tmp */ xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ alert(xhr.responseText); } }; xhr.send(param); } function getXHR(){ try{return new XMLHttpRequest();}catch(e){} try{return new ActiveXObject("Msxml2.XMLHTTP.3.0");}catch(er){} throw new Error("This browser does not support XMLHttpRequest"); } }()); При ошибке сработает ErrorHandler. В дополнение к этому нужна функция, которая будет сама узнавать в каком файле и на какой строке ее вызвали. То есть, в каком-то участке кода я ожидаю, что что-то может пойти не так. Я не хочу оборачивать этот участок кода в try...catch, ради того чтобы в try по условию бросить исключение. Я хочу просто вызвать некий triggerError('ошибка') и продолжить выполнение. triggerError должен определить файл и строку, где его вызвали и вместе с ошибкой передаст это все в ErrorHandler, который и отправит все это на сервер |
Цитата:
|
nerv_,
что-то я не догоню, как при помощи observer такое реализовать..? |
Цитата:
|
Цитата:
try { setTimeout(function() { foo(); }, 1000) } catch(e) { alert(1); // will not work } window.onerror = function(e) { alert(2); }; Цитата:
Octane, он просто ерундой страдает :) Не хочет слушать, что советуют) Hapson, ща америку для тебя открою: var app = { error: function(e) { alert(1) } }; app.error(); Читай про ООП. |
nerv_,
Пиши по делу, ладно? Мне нужно, чтобы при вызове определенной функции, эта функция узнала, в каком файле и на какой строке ее вызвали. В php это выглядит так <?php function ErrorHandler($number, $message, $file, $line, $context){ /* обработка ошибки */ } set_error_handler('ErrorHandler'); // и теперь... trigger_error('ошибка'); // в ErrorHandler будет передан текст ошибки, файл и строка, где был вызван trigger_error, код ошибки и контекст. ?> |
Часовой пояс GMT +3, время: 01:07. |