2015-02-10 2 views
1

У меня есть браузер, у которого нет консоли. Мне нужно перенаправить вывод на мою домашнюю консоль.Ошибка при печати javascript в пользовательской консоли

Есть ли способ достичь этого?

+0

Где дом сделал консольный жить? – Halcyon

+0

@ Halcyon это фиксированный div в webview – BigDong

ответ

3

Если это просто ошибки, которые вы хотите поймать, из них отправится в window.onerror handler.

window.onerror = function(errorMsg, url, lineNumber) { 
    // ...do something with the information... 

    // Return false if you want to prevent the browser's default behavior 
    return false; 
}; 
+0

Почему «некоторые из»? Я проверил, что вы - ссылка, вы пробовали это на производстве? – BigDong

+0

@BigDong: Этот комментарий основан исключительно на странице MDN, с которой я связан; MDN совместно редактируется и, следовательно, иногда ошибочен, но обычно прав. В этом случае я не знаю, есть это или нет. Я задавался вопросом, может ли это относиться к коду, который даже не может быть проанализирован (например, в отдельном блоке сценария), но в моих тестах Chrome, Firefox и IE11 все три называются 'onerror' даже в этом случае. –

+0

Я пробовал в браузере Android, он вообще не работал – BigDong

1

Вы можете создать очень простую пользовательскую консоль с несколькими строками HTML и javascript. Например:

var xConsole = { 
 
    log: function(msg) { 
 
     var output = '<div>' + msg + '</div>'; 
 
     document.getElementById('console').insertAdjacentHTML('beforeend', output); 
 
    } 
 
}; 
 

 
xConsole.log('test'); 
 
xConsole.log(new Date().getTime());
<pre id="console"></pre>

Затем вам нужно будет поставить этот HTML строку где-то в документе (или добавить его динамически). Вы также можете использовать некоторые CSS для его стилизации или размещения по своему усмотрению.

UPD. Улучшено за комментарий T.J. Crowder. Здесь можно очень простое решение, которое будет также поддерживать ошибку ловли:

// uncomment below line and remove "if (true) {" when used in real world 
 
//if (!window.console) { 
 
if (true) { 
 
    
 
    window.console = function() { 
 
     
 
     var _ = {}; 
 
     
 
     _.log = function(msg) { 
 
      var output = '<div>' + msg + '</div>'; 
 
      document.getElementById('console').insertAdjacentHTML('beforeend', output); 
 
     }; 
 
     
 
     window.onerror = function(errorMsg) { 
 
      _.log(errorMsg); 
 
     }; 
 
     
 
     return _; 
 
    }(); 
 
} 
 

 
// Should log simple message 
 
console.log('test message'); 
 

 
// Should log reference error 
 
test + 1;
<pre id="console"></pre>

Смежные вопросы