2016-08-22 2 views
3

Кто-нибудь знает, как увидеть вывод из вызова console.log() в фоновом скрипте? Я вижу результат от того же в сценарии содержимого. Вот простой скрипт, который я пробовал с:Как просмотреть вывод console.log фонового сценария в Firefox WebExtension?

Вот мои background.js:

console.log("Message from background.js"); 

Вот мой manifest.json:

{ 
    "name": "TestBed", 
    "manifest_version": 2, 
    "version": "1.0", 

    "background": { 
     "scripts": ["background.js"] 
    }, 

    "browser_action": { 
     "default_title": "Click" 
    }, 

    "applications": { 
     "gecko": { 
      "id": "[email protected]", 
      "strict_min_version": "48.0a1" 
     } 
    } 
} 

Я также попробовал это в фоновом режиме:

chrome.browserAction.onClicked.addListener(function() { 
    console.log('Message from background.js onclicked handler'); 
}); 

Я даже удалил Firebug, как предлагали некоторые другие сообщения, но это тоже не имело значения (обратите внимание, что работает console.log в сценариях контента).

ответ

3

Вы можете увидеть выходные данные console.log() из фоновых сценариев в Browser Console. Вы можете открыть браузер консоли либо с помощью комбинации клавиш, Ctrl - сдвиг - J или Cmd - сдвиг - J на OSX, или в строке меню Firefox: Tools➞Web Developer➞Browser Console.

При тестировании WebExtensions в версиях, больших или равных 49, Я регулярно злоупотребляю неправильной настройкой, чтобы заставить расширение открыть консоль браузера. Функция alert() не поддерживается в фоновых сценариях, но откроет Консоль браузера и выведет текст предупреждения в консоли. Выполнение этого будет работать в версиях Firefox, больших или равных 49,0. Тем не менее, это порождает ошибку в более ранних версиях Firefox.

Для тестирования я часто включаю в моих фоновых сценариях что-то вроде:

//* For testing, open the Browser Console 
try{ 
    //Alert is not supported in Firefox. This forces the Browser Console open. 
    //This abuse of a misfeature works in FF49.0b+, not in FF48 
    alert('Open the Browser Console.'); 
}catch(e){ 
    //alert() throws an error in Firefox versions below 49. 
    console.log('Alert threw an error. Probably Firefox version < 49.'); 
} 
//* 

  1. некоторого времени в Firefox 52.0a2 (издание Developer) и 53.0a1 (Nightly), это было бы вместо выбросить загадочную ошибку. В последних версиях этих версий это было возвращено функциональности, видимой в Firefox 49: открытие Консоли браузера и отображение переданного текста и сообщения в 2 (ниже).
  2. В дополнение к тексту, переданному в alert(), он также выводится на отдельной строке: «alert() не поддерживается в фоновых окнах, вместо этого используйте console.log».
+0

Как вы называете «Предупреждение», когда вы нажимаете кнопку (не всплывающее меню)? – Andreyua

+0

@ Andreyua, С фонового скрипта? Вы этого не сделаете. Вы можете открыть окно с собственным HTML, чтобы оно выглядело как напоминание. Вы можете сделать это эффективно модальным (то есть, что пользователь должен взаимодействовать с ним перед тем, как делать что-либо еще), но вы не можете иметь что-то, что фактически блокирует выполнение JavaScript. – Makyen

+0

Не заботитесь: фоновый скрипт или нет, как вызвать нормальное предупреждение, нажав кнопку WebExtension? Неужели не невозможно? – Andreyua

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