Пользователь Script Отладка в Google Chrome

Какой лучший способ отладки пользовательских скриптов пользователя (aka Greasemonkey) в Chrome? Есть ли способ включить отслеживание пользователей Script в Инструментах разработчика?

Ответы

Ответ 1

Какая отладка вы хотите? Как сказал Алекс, пользовательские скрипты будут перечислены в том же контексте, что и сама отладка самой страницы. Если вы перейдете на вкладку "scripts" в инструментах разработчика, вы увидите панель с выпадающим списком, которая позволит вам выбрать соответствующий файл javascript, который вы хотите отлаживать. Такие скрипты должны иметь URL-адреса, которые выглядят как chrome-extension://<hash>/<script file>.js. Эти сценарии также будут записываться в консоль страницы, на которой они встроены.

Кроме того, если вы хотите войти в одно и то же место для всех страниц, вы можете попытаться создать свой script в качестве полного расширения chrome, используя пользовательский script как контент script. Затем вы можете отправить сообщение из своего контента script на свою фоновую страницу и войти в систему. Например, если это был ваш контент script:

function log(text) {
  chrome.extension.sendRequest({'action' : 'log', 'text' : text}, function() {});
};
log("Content script loaded: " + window.location.href);

И это была ваша справочная страница:

<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <script>
      function onRequest(request, sender, callback) {
        if (request.action && request.action == 'log') {
          console.log(request.text);
        }
      };

      chrome.extension.onRequest.addListener(onRequest);
    </script>
  </body>
</html>

Вы увидите каждую загрузку содержимого script в журнале фоновой страницы.

Ответ 2

i выполните следующие действия в моих сценариях для совместимости с GPU для кросс-браузера:

function testGM() {
var isGM = typeof GM_getValue != 'undefined' && typeof GM_getValue('a', 'b') != 'undefined';
if(typeof(unsafeWindow) == 'undefined') { unsafeWindow = window; }
if(!isGM) { log = function(msg) { try { unsafeWindow.console.log(msg); } catch(e) {} }; } else { log = GM_log; }
if(window.opera) log = opera.postError;
setValue = isGM ? GM_setValue : function (name, value) { return localStorage.setItem(name, value) };
getValue = isGM ? GM_getValue : function(name, def){ var s = localStorage.getItem(name); return s == null ? def : s };
}
testGM();

Это не мое. это любезно sizzemctwizzle @userscripts.org

Я использую только log, getValue и setValue, поэтому только это дерево в этой функции.
Вы также можете проверить его guide.
Или вы можете проверить GIJoe кросс-браузер GM Api тоже.

Ответ 3

Вы можете использовать меньший script, чтобы на самом деле ввести пользовательскую отладку script на страницу. В этот момент у вас будет тот же доступ к инструментам разработчика, как если бы он был фактически включен на странице.