Как добавить консоль на страницу на стороне клиента

#javascript #html #node.js #console

Вопрос:

Я ищу способ сделать консоль видимой и способной принимать входные данные со стороны клиента node.js электронное приложение. Чтобы быть ясным, это приложение, которое я разработал для собственного личного использования, чтобы помочь создавать диаграммы и отчеты из локальных файлов Excel, поэтому безопасность не является проблемой.

Мои данные сохранены в виде объектов JS, которые загружают мои диаграммы и таблицы. Однако время от времени мне нужно получать доступ к данным из объекта, который не заслуживает создания процесса на стороне клиента из-за его редкости. Есть ли способ сделать консоль видимой на клиентской стороне моего приложения, чтобы я мог быстро просматривать данные из своих глобальных объектов в консоли?

Спасибо, Сихорд

Ответ №1:

Вы можете переопределить console.log поведение по умолчанию, чтобы вместо этого печатать на странице:

 console.log = function(text){  document.body.insertAdjacentHTML('beforeend', `lt;div class='log'gt;lt;div class='text'gt;${text}lt;/divgt;lt;div class='time'gt;${new Date().toLocaleString()}lt;/divgt;lt;/divgt;`) }   console.log('Hello World!') console.log('Log #2') 
 .log{display:flex;justify-content:space-between;padding:15px 20px;border-bottom:1px solid grey;margin-bottom:5px}.log .text{font-weight:bold} 

Чтобы позволить пользователю вводить данные так же, как они вводились бы в консоли, вы можете использовать eval для оценки их JS:

 console.log = function(text){  document.body.insertAdjacentHTML('beforeend', `lt;div class='log'gt;lt;div class='text'gt;${text}lt;/divgt;lt;div class='time'gt;${new Date().toLocaleString()}lt;/divgt;lt;/divgt;`) }  window.onerror = function(text){  document.body.insertAdjacentHTML('beforeend', `lt;div class='log danger'gt;lt;div class='text'gt;${text}lt;/divgt;lt;div class='time'gt;${new Date().toLocaleString()}lt;/divgt;lt;/divgt;`) }  btn.addEventListener('click', function(){  eval(input.value) }) 
 .log{display:flex;justify-content:space-between;padding:15px 20px;border-bottom:1px solid grey;margin-bottom:5px}.log .text{font-weight:bold}.danger{background-color:tomato} 
 lt;input id="input"gt;lt;button id="btn"gt;Executelt;/buttongt; lt;brgt;lt;brgt; Try entering something like: console.log('hi') 

Комментарии:

1. Спасибо, это, безусловно, полезно! Тем не менее, я хотел бы также иметь возможность вводить данные, как если бы я использовал инструменты разработки Chrome. Поэтому я мог бы, например, найти определенное значение в объекте через консоль, так как это одноразовый захват данных. Есть какие-нибудь мысли по этому поводу?

2. Красивые. Большое вам спасибо! Не так важно, но могу ли я получить какие-либо ошибки, вызванные консолью для печати? Если я введу неверное значение ключа объекта или что-то в этом роде и т. Д…. Во всяком случае, помечено как отвеченное!

3. @sychordCoder Я обновил свой ответ, чтобы также обрабатывать ошибки 🙂 Просто прислушайтесь к error событию.