Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 03.04.2014, 12:41
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

dmitry111,
Моя ошибка - не написал для чего все это.
Для того чтобы отправить сведения об ошибке на сервер для логирования.
То есть я пишу в коде triggerError('ошибка!') и все. Дальше я хочу чтобы эта функция передала на сервер не только текст ошибки, но и файл/строку, где была вызвана.
Сообщение от dmitry111
он наверно и не знает что в браузерах встрена консоль ошибок
смешно, смешно...
Сообщение от dmitry111
Мне ее как раз и не хватает при работе с сервером
плагин для NPP + плагин для FF/Chrome = пошаговое выполнение php с просмотром переменных в консоли NPP
Ответить с цитированием
  #12 (permalink)  
Старый 03.04.2014, 13:07
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 822

думаю вам сюда

http://javascript.ru/blog/azriman/se...bok-javascript
Ответить с цитированием
  #13 (permalink)  
Старый 03.04.2014, 13:26
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Hapson, тебе не ошибки нужны, а пользовательские события. Можешь использовать
Сообщение от Octane
CustomEvent
, а можешь написать свою реализацию.

Observer, CustomEvent, ...
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #14 (permalink)  
Старый 03.04.2014, 13:29
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

dmitry111, передать не проблема, тема о trigger_event, проблема в том, что dispatchить свою ошибку не получается.
Ответить с цитированием
  #15 (permalink)  
Старый 03.04.2014, 13:31
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

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, который и отправит все это на сервер

Последний раз редактировалось Hapson, 03.04.2014 в 13:33.
Ответить с цитированием
  #16 (permalink)  
Старый 03.04.2014, 13:34
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

Сообщение от Hapson
getXHR
ты чо для IE6 чтоли делаешь?
Ответить с цитированием
  #17 (permalink)  
Старый 03.04.2014, 13:37
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

nerv_,
что-то я не догоню, как при помощи observer такое реализовать..?
Ответить с цитированием
  #18 (permalink)  
Старый 03.04.2014, 13:39
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Сообщение от Octane Посмотреть сообщение
ты чо для IE6 чтоли делаешь?
Пусть будет... несколько лишних строчек - не страшно
Ответить с цитированием
  #19 (permalink)  
Старый 03.04.2014, 13:44
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Hapson
Я не хочу оборачивать этот участок кода в try...catch, ради того чтобы в try по условию бросить исключение.
не поймаешь
try {
    setTimeout(function() {
        foo();
    }, 1000)
} catch(e) {
    alert(1); // will not work
}

window.onerror = function(e) {
    alert(2);
};

Сообщение от Hapson
Я хочу просто вызвать некий triggerError('ошибка') и продолжить выполнение
см. мой ответ выше

Octane, он просто ерундой страдает Не хочет слушать, что советуют)

Hapson, ща америку для тебя открою:
var app = {
   error: function(e) {
       alert(1)
   }
};

app.error();

Читай про ООП.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 03.04.2014 в 13:48.
Ответить с цитированием
  #20 (permalink)  
Старый 03.04.2014, 14:02
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

nerv_,
Пиши по делу, ладно?
Мне нужно, чтобы при вызове определенной функции, эта функция узнала, в каком файле и на какой строке ее вызвали.
В php это выглядит так
<?php
function ErrorHandler($number, $message, $file, $line, $context){
    /* обработка ошибки */
}
set_error_handler('ErrorHandler');

// и теперь...

trigger_error('ошибка');
// в ErrorHandler будет передан текст ошибки, файл и строка, где был вызван trigger_error, код ошибки и контекст.
?>
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибки при асинхронных AJAX запросах San4ezy Общие вопросы Javascript 4 27.03.2014 19:48
Что за ошибки в скриптах на сайте? razorg1991 Ваши сайты и скрипты 4 30.08.2013 12:37
Генерация поля из 8000 картинок на стороне клиента VS генерация картинки на сервере xintrea Events/DOM/Window 2 25.06.2013 19:10
Определить код ошибки. crot26rus jQuery 2 15.07.2011 14:32
Как узнать какие ошибки произошли при парсинге xml файла faunder Events/DOM/Window 0 12.09.2008 13:17