Показывать консольные сообщения в браузере Android

1

Я занимаюсь веб-разработкой с помощью Android (не укоренившегося) телефона и ищу метод для отображения консольных сообщений браузера (Chrome или Firefox). Ни у Android Chrome, ни у Firefox нет веб-инспектора/консоли, и я не нашел Firefox (рабочий) надстройкой.

Обновление: я не могу подключить свой телефон к компьютеру (ADB, удаленный инструмент Chrome... недоступен).

Кто-нибудь может намекнуть мне жизнеспособное решение?

  • 0
    Я занимался разработкой мобильных приложений и использовал инструменты Chrome Dev, мне просто нужно было подключить телефон к ноутбуку и использовать инструменты Chrome Dev на своем ноутбуке. Он должен отображать все ошибки и журналы консоли и тому подобное. Вы также можете редактировать HTML и прочее на своем компьютере и видеть, как он меняется на вашем телефоне. developers.google.com/web/tools/chrome-devtools Дайте мне знать, если это поможет
  • 0
    Вы проверили этот ответ - stackoverflow.com/a/10816652/1380032
Показать ещё 1 комментарий
Теги:
console
google-chrome
firefox

1 ответ

0
Лучший ответ

Я не нашел решение "просто работать" для решения моей проблемы, поэтому я сделал небольшой инструмент для отправки журналов и ошибок из браузера на серверный сервер.

Он использует прокси -сервер вокруг объекта window.console и реализует функцию window.onerror для отправки сообщений на сервер.

Я структурировал код, чтобы использовать его как промежуточное ПО expressjs для повторного использования. Он не идеален и может быть несовместим со всеми браузерами, но он действительно помогает, если в браузере нет инструментов dev.

Любой может проверить его через repl.it.

// Use this module as middleware with expressjs compatible server:
//
// In the server:
//   consoleWrapperMiddleware(basePath, app)
//     basePath: URL path to send browser messages
//     app: expressjs application reference
//     return: nothing
//
// In the html page:
//   <script src="basePath" />
//     basePath: URL path to send browser messages

function consoleWrapper(oldConsole, oldOnerror, serverUrl) {
    function _post(log) {
        const req = new XMLHttpRequest()
        req.open('POST', serverUrl, true)
        req.setRequestHeader('Content-Type', 'application/json')
        req.send(JSON.stringify(log))
    }

    const console = new Proxy(oldConsole, {
        get: (target, propKey, receiver) => {
            const origMethod = target[propKey]
            return function (...args) {
        if (origMethod === undefined) { 
          const message = 'unknown console method: '+propKey
                _post({ level: 'wrap', message: [message]})
          return message
        }
        else {
                  let result = origMethod.apply(this, args)
                  _post({ level: origMethod.name, message: args })
                  return result
        }
            }
        }
    })

  const onerror = function(msg, url, line, col) {
    if (typeof oldOnerror === 'function')
      oldOnerror(arguments)
    const content = [ msg, url+':'+line+':'+col ]
    _post({ level: 'js-err', message: content })
  }

  return [ console, onerror ]
}

function consoleWrapperMiddleware(basePath, app) {
    app.get(basePath, (req, res) => {   
        res.status(200).send('[ window.console, window.onerror ] = '+consoleWrapper.toString()+'(window.console, window.onerror, location.protocol.concat("//").concat(location.host).concat("'+basePath+'"))')

        console.log('Console wrapper sent')
    })

    app.post(basePath, (req, res) => {  
        let body = []
        req.on('data', (chunk) => {
            body.push(chunk)
        }).on('end', () => {
            body = Buffer.concat(body).toString()

            const logMsg = JSON.parse(body)
            console.log('['+logMsg.level+']', ...logMsg.message)

            res.writeHead(200)
            res.end()
        })  
    })

    console.log('Log server listening from',basePath)
}

module.exports = consoleWrapperMiddleware

Ещё вопросы

Сообщество Overcoder
Наверх
Меню