Chrome でカスタム ユーザー スクリプト (別名 Greasemonkey) をデバッグする最良の方法は何ですか? 開発者ツールでユーザー スクリプトの追跡を有効にする方法はありますか?
3 に答える
どのようなデバッグが必要ですか? 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>
バックグラウンド ページのログに、コンテンツ スクリプトの各読み込みが表示されます。
クロスブラウザー 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もチェックアウトできます。
より小さなスクリプトを使用して、カスタムデバッグスクリプトを実際にページに挿入できます。その時点で、実際にページに含まれているかのように、開発者ツール内で同じアクセス権を取得できます。