用户脚本调试谷歌浏览器
-
22-09-2019 - |
题
什么是Chrome浏览器调试的自定义用户脚本(又名的Greasemonkey)的最佳方式?有没有一种方法,使用户脚本跟踪的开发工具?
解决方案
你想要什么样的调试?像亚历克斯说,用户脚本将在相同的上下文中调试页面本身上市。如果你去的开发工具的“脚本”选项卡,你会看到一个下拉菜单,让您选择要调试适当的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
我只使用日志,的getValue&的setValue截至目前,因此仅这些树在该函数。结果, 您还可以看看他的指南。结果 或者你可以检出 GIJOE的的跨浏览器GM阿比的太
您可以使用一个较小的脚本来实际注入您的自定义调试脚本到页面中。在这一点上,你将拥有的开发工具相同的访问中,就好像它实际上是包含在页面上。
不隶属于 StackOverflow