15

Chrome でカスタム ユーザー スクリプト (別名 Greasemonkey) をデバッグする最良の方法は何ですか? 開発者ツールでユーザー スクリプトの追跡を有効にする方法はありますか?

4

3 に答える 3

9

どのようなデバッグが必要ですか? Alex が言ったように、ユーザー スクリプトは、ページ自体のデバッグと同じコンテキストで一覧表示されます。開発者ツールの「スクリプト」タブに移動すると、デバッグする適切な 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>

バックグラウンド ページのログに、コンテンツ スクリプトの各読み込みが表示されます。

于 2010-03-10T17:28:30.203 に答える
3

クロスブラウザー 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();

私のものではありません。sizzemctwizzle @ userscripts.orgの厚意によるものです。

私は今のところlog、getValue、setValueのみを使用しているため、その関数ではこれらのツリーのみを使用しています。彼のガイド
もご覧ください。 または、GIJoe のクロスブラウザー GM Apiもチェックアウトできます。

于 2010-05-08T08:55:40.853 に答える
0

より小さなスクリプトを使用して、カスタムデバッグスクリプトを実際にページに挿入できます。その時点で、実際にページに含まれているかのように、開発者ツール内で同じアクセス権を取得できます。

于 2009-10-19T21:59:16.403 に答える