Отладка пользовательского скрипта в Google Chrome

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

3 ответов


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

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

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>

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


Я использую следующую функцию в моих скриптах для кросс-браузерной совместимости GM Api:

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();

это не мое. это вежливость!--4-->sizzemctwizzle @ userscripts.org

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


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