Buduję narzędzie do debugowania dla mojej aplikacji internetowej i muszę wyświetlać błędy konsoli w pliku div. Wiem, że mogę użyć własnego, stworzonego na konsolę obiektu i użyć go, ale do przyszłego użycia muszę wysłać wszystkie błędy konsoli do okna. Właściwie chcę przechwytywać zdarzenia konsoli.Wyświetlanie błędów konsoli i alertów w dziale div na stronie
Odpowiedz
Aby utrzymać pracę konsoli:
if (typeof console != "undefined")
if (typeof console.log != 'undefined')
console.olog = console.log;
else
console.olog = function() {};
console.log = function(message) {
console.olog(message);
$('#debugDiv').append('<p>' + message + '</p>');
};
console.error = console.debug = console.info = console.log
Jak o coś tak prostego jak:
console.log = function(message) {$('#debugDiv').append('<p>' + message + '</p>');};
console.error = console.debug = console.info = console.log
Głosowałem swoją odpowiedź w górę To jest naprawdę inteligentny, ale to spowodowało faktyczny. konsola przestała działać – Mohsen
@DannyBeckett po prostu edycja z document.getElementById byłaby bardziej konstruktywna niż trolling -1 na odpowiedzi z 2011 roku. –
oto sposób za pomocą zamknięcia, zawierający funkcję starego dziennika konsola w zakresie nowego .
console.log = (function (old_function, div_log) {
return function (text) {
old_function(text);
div_log.value += text;
};
} (console.log.bind(console), document.getElementById("error-log")));
elegancka odpowiedź! – iamwhitebox
Mam to działa przy użyciu 'div_log.textContent + = text;' – srgsanky
Dodanie 'console.error = console.log = (funkcja ...' wykonane moje prace na błędy.To może działać dla innej 'konsoli. [Cokolwiek]' jak również. Również zmiana @ srgsanky była konieczna, aby działała na mojej. –
Inaczej, jeśli były zainteresowane w utrzymaniu log
, warn
i error
oddzielone od siebie, można zrobić coś takiego (na podstawie odpowiedzi MST'S):
var log = document.querySelector('#log');
['log','warn','error'].forEach(function (verb) {
console[verb] = (function (method, verb, log) {
return function (text) {
method(text);
// handle distinguishing between methods any way you'd like
var msg = document.createElement('code');
msg.classList.add(verb);
msg.textContent = verb + ': ' + text;
log.appendChild(msg);
};
})(console[verb].bind(console), verb, log);
});
gdzie #log
to HTML element. Zmienna verb
jest jedną z następujących: 'log'
, , lub 'error'
. Następnie możesz użyć CSS do stylizowania tekstu w wyróżniający sposób. Zauważ, że duża część tego kodu nie jest zgodna ze starszymi wersjami IE.
Sprawdzono. Najlepsze rozwiązanie konsolowe w tym temacie. –
Nie udało się uchwycić żadnego z błędów, które wciąż były wysyłane na dane wyjściowe Narzędzi Google Chrome. – CaptainBli
Zobacz w akcji: https://jsfiddle.net/FrostyZ/chhxav9h/ –
Żadna z odpowiedzi tutaj nie uwzględnia komunikatów konsoli, które przekazują wiele parametrów. Na przykład. console.log("Error:", "error details")
).
Funkcja, która zastępuje domyślną funkcję rejestru, lepiej uwzględnia wszystkie argumenty funkcji (np. Za pomocą obiektu arguments
). Oto przykład:
console.log = function() {
log.textContent += Array.prototype.slice.call(arguments).join(' ');
}
(Array.prototype.slice.call(...)
prostu konwertuje obiekt do tablicy arguments
, więc to może być łączone z łatwością join()
.)
Gdy oryginał dziennika powinny być przechowywane pracy, a także:
console.log = (function (old_log, log) {
return function() {
log.textContent += Array.prototype.slice.call(arguments).join(' ');
old_log.apply(console, arguments);
};
} (console.log.bind(console), document.querySelector('#log')));
kompletne rozwiązania
var log = document.querySelector('#log');
['log','debug','info','warn','error'].forEach(function (verb) {
console[verb] = (function (method, verb, log) {
return function() {
method.apply(console, arguments);
var msg = document.createElement('div');
msg.classList.add(verb);
msg.textContent = verb + ': ' + Array.prototype.slice.call(arguments).join(' ');
log.appendChild(msg);
};
})(console[verb], verb, log);
});
(Przykładem frameworka emitującego wiadomości o wielu parametrach jest Video.js. Ale jest na pewno wiele innych)
Edycja:... Innym zastosowaniem wielu parametrów ma możliwości formatowania konsoli (np console.log("Status code: %d", code)
- 1. Jak zatrzymać wyświetlanie alertów przez Google reCAPTCHA?
- 2. Jak możemy wyśrodkować div w dziale za pomocą przycisków po jego lewej i prawej stronie?
- 3. Jak ustawić mapę na div w innym dziale?
- 4. CasperJS i pola alertów
- 5. Wyświetlanie pasków przewijania na górze i dole urządzenia DIV
- 6. Wyłącz wyświetlanie okna konsoli
- 7. Poziomo centrum DIV na stronie
- 8. Wyświetlanie błędów krytycznych/powiadomień w przeglądarce
- 9. Django: Poprawne wyświetlanie błędów formowania
- 10. Wyświetlanie konsoli i debugera w tym samym czasie w IntelliJ
- 11. Wyświetlanie wyników serwletu na stronie jsp.
- 12. Wyświetlanie komunikatów dziennika błędów w dzienniku GTK
- 13. Wyświetlanie informacji o debugowaniu w konsoli
- 14. Wyświetl modalne DIV na zaciemnionej stronie
- 15. wyświetlanie chińskiej postaci w wyjściu konsoli eclipse
- 16. Zdobądź pozycję myszy w przewijanym dziale
- 17. Wyświetlanie danych w czasie rzeczywistym na stronie internetowej
- 18. Tworzenie częściowego cienia pudełka na przekrzywionym dziale
- 19. Obrazy jQuery LazyLoad w ukrytym dziale
- 20. Dwa elementy div obok siebie - Wyświetlanie płynów
- 21. Czy można załadować element iframe w ukrytym dziale div, dopóki element div nie zostanie wyświetlony?
- 22. jak pozycjonować divs w innym dziale
- 23. Zmień kontekst konsoli Safari 6 na element iframe na stronie
- 24. Wyświetlanie błędów stanu modelu po wywołaniu ajaxa na widokach Razor
- 25. Ikona pozycji w pionie pośrodku w dziale
- 26. Jubiler cykl 2 nie działa bez błędów konsoli
- 27. Wyświetlanie błędów przy użyciu Knockout JS + MVC + sprawdzanie poprawności modelu po stronie serwera?
- 28. Czy istnieje sposób na złapanie błędów konsoli internetowej?
- 29. Jak ustawić nazwę bieżącej sekcji działu w innym dziale?
- 30. Jak uzyskać stronę Div of Master na stronie w ASP.net?
czy nadal działa? –
Nie działa dla mnie Używam przeglądarki Chrome – GobSmack
pracował w chrome 48 – Sudara