вход в консоль Google Chrome - PullRequest
0 голосов
/ 24 июня 2011

Я пишу расширение для Google Chrome и пытаюсь перейти на кодирование в HTML, CSS и Javascript с того типа кодирования, который я делал 40 лет назад. Это большая кривая обучения, но немного консольной регистрации очень поможет. (Кто помнит зеленые люминофорные дисплеи на старой памяти с железным сердечником Sperry Univacs? Теперь появилась консоль, которая могла бы рассказать вам, что происходит - смонтировать ленту, сменить диск или положить больше бумаги в принтер.) Но я отвлекся ,

Всего несколько дней назад мне удалось отправить сообщения в журнал консоли Google Chrome DOM Inspector из моего скрипта содержимого или фоновой страницы, например:

console.log = "ПОЛУЧЕННЫЙ ЗАПРОС ОТ СОДЕРЖАНИЯ СЦЕНАРИИ PEEK.JS";

Позже, если бы я осмотрел страницу, на которой был введен этот код, я бы увидел то же самое сообщение на консоли. Если бы эта строка выполнялась четыре раза, я бы видел четыре экземпляра этих сообщений в последовательности на консоли. Это было просто, но красиво.

Теперь на консоли ничего не появляется, если я не наберу "console.log", и в этом случае я вижу только последний экземпляр сообщения. В чем здесь проблема? Я что-то выключил в отладчике? Я неправильно пишу код? Должно ли это быть: "console.log (" Message Here ");" - (это всегда возвращает ошибку)?

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

Например, вчера, после реструктуризации того, что когда-то работало, кода, так чтобы он передавал массив из фона в контент, а не из фона, последовательно запрашивая каждый элемент из контента, расширение оборвалось, как и следовало ожидать. На консоли отображается одно сообщение об ошибке: «Ошибка во время вкладки executeScript: неизвестная ошибка». со ссылкой «chrome / ExtensionProcessBindings: 95» в правой части этой же строки. Очевидно, что сообщение об ошибке почти бесполезно. Нажав на ссылку, я попадаю на панель ресурсов, на которой справа отображается пустая рамка со словами "background.html". Это также бесполезно.

Чем эта информация вообще полезна? Мне потребовалось еще шесть часов, чтобы понять, что я переместил определение переменной в другое место кода, чтобы оно не было определено во время выполнения строки executeScript. Если бы в сообщении об ошибке говорилось, что параметр не определен в executeScript, я мог бы найти его примерно через десять минут.

Итак, вернемся к первоначальному вопросу - Я ХОЧУ ПРОСТО ОТВЕТИТЬ - не говорите мне писать функцию. Я видел консоль, отображающую то, что я хотел два дня назад, без написания каких-либо функций.

Ответы [ 2 ]

3 голосов
/ 26 июня 2011

Вот ваш простой ответ: вместо

console.log="RECEIVED REQUEST FROM CONTENT SCRIPT PEEK.JS";

Вы должны использовать

console.log("RECEIVED REQUEST FROM CONTENT SCRIPT PEEK.JS");
0 голосов
/ 18 октября 2013
  • Для console.log():

    https://developer.mozilla.org/en-US/docs/Web/API/console.log

    Я бы порекомендовал поискать в Mozilla Developer Network документацию по JavaScript и многим браузерным технологиям.

  • Мое общее предложение, чтобы помочь с опечатками или переменными вне области видимости, состоит в том, чтобы использовать строгий JavaScript:

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode

    Это превращает некоторые идиомы JavaScript в ошибки, которые обнаруживаются ранее и которые дают более полезную диагностику. (Быстрая версия - поставить одну строку "use strict"; в верхней части ваших js-файлов, или, если это вызывает много проблем, вы можете поместить ее в качестве первой строки внутри любой функции для выполнения миграции по функциям.)

  • Причина, по которой console.log = blah будет показывать blah на консоли в некоторых ситуациях, заключается в том, что в JS <left side> = <right side expression> является выражением, которое оценивается в то же значение, что и просто <right side expression>, но имеет побочный эффект также присвоения <left side>. (Это похоже на выражения присваивания Си.)

    Затем в контексте, в котором вы были, консоль отобразит результат любого вычисления выражения. Это отличается от явного вызова console.log(), который будет отображать аргументы как предполагаемый побочный эффект этой функции.

    Таким образом, в этом случае вы перезаписывали стандартную функцию console.log строкой, и все выражение соответствует этому строковому значению и встроенному поведению консоли ( not функция console.log()!) будет отображать результат вашей оценки.

    В JS большинство вещей изменчивы, и вы можете перезаписывать все виды полей и переменных, так что помните об этой потенциальной ошибке!

Кроме того, общая рекомендация по обращению за помощью в Интернете:

Для таких сайтов, как StackOverflow, нужно ограничить свой пост одним конкретным вопросом. Это связано с тем, что люди с похожими проблемами будут приходить сюда на основе поисковых запросов в Интернете или других ссылок, и им необходимо выяснить, помогает ли эта страница быстро решить их конкретную проблему. Если им приходится читать абзацы с несколькими вопросами или анекдотами, это действительно замедляет их. Я предполагаю, что именно поэтому этот вопрос был отклонен.

Если у вас есть несколько вопросов, делайте отдельные сообщения. StackOverflow не очень хороший сайт для анекдотов о вашем прошлом опыте. FWIW- Я лично нашел ваш опыт программиста на машинах эпохи 70-х интересным, но многие читатели могут потеряться в деталях. Подобные анекдоты могут стать хорошим постом в блоге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...