Chrome/Firefox 的Addons 扩展插件调试,
Firefox 的Addons 扩展插件调试
https://zhuanlan.zhihu.com/p/67836345
https://www.dzsfo.com/2019/10/11/Chrome-Hackbar/
-
找到 Firefox扩展目录中的插件
%AppData%\Roaming\Mozilla\Firefox\Profiles{profile_name}\extensions{addon_name}.xpi -
加载本地插件
地址栏输入 about:debugging#/runtime/this-firefox
//或 加载目标组件, 解压后在Firefox中: 工具- 扩展和主题 - 点击齿轮 - 调试附加组件 - 临时载入附加组件
注: 需要点击重载刷新修改 -
调试插件
about:debugging#/runtime/this-firefox , 对应插件 - 点击检查 即可在窗口下断点 -
发布
参考顶部链接3
Firefox 开发者 https://addons.mozilla.org/zh-CN/firefox/
Hackbar 扩展调试
修改的部分:
之前点 execute 总是不好使。 解决方法如下:
if(method === "GET"){
// let code = "const url = \""+ encodeURIComponent(url) +"\";";
// code += "window.location.href = decodeURIComponent(url);";
// chrome.devtools.inspectedWindow.eval(code, function(result, isException){
// setTimeout( () => { currentFocusField.focus() }, 100 );
// });
// let href = `let url = "${encodeURIComponent(url)}";`;
const url1 = decodeURIComponent(encodeURIComponent(url))
let code = `window.location.href='${url1}'`
chrome.devtools.inspectedWindow.eval(code, function (result, isException) {
setTimeout(() => {
currentFocusField.focus()
}, 100)
})
}
Chrome 扩展程序调试
打开 扩展程序, 启用开发者模式。加载已解压的扩展程序。
点击: 查看视图 背景页。 可以看到该扩展的 Console.log 输出。
下面示例打开所有 3980下的书签
manifest.json
{
"manifest_version": 2,
"name": "My Bookmarks Extension",
"version": "1.0",
"permissions": [
"bookmarks",
"tabs"
],
"background": {
"scripts": ["background.js"]
}
}
// background.js
// 定义书签文件夹的 ID
var folderId = '3980';
// 监听扩展程序安装事件
chrome.runtime.onInstalled.addListener(function() {
// 使用 Chrome 浏览器提供的开发者工具 API 创建一个新的标签页
chrome.tabs.create({url: "chrome://bookmarks/"}, function(tab) {
// 监听标签页的加载完成事件
chrome.tabs.onUpdated.addListener(function listener(tabId, changedProps) {
if (tabId === tab.id && changedProps.status === 'complete') {
// 从 Chrome 书签管理器获取书签列表
chrome.bookmarks.getChildren(folderId, function(bookmarks) {
// 打开所有书签链接,忽略文件夹
bookmarks.forEach(function(bookmark) {
if (bookmark.url) {
chrome.tabs.create({url: bookmark.url, active: false});
}
});
});
// 移除监听器,避免重复执行
chrome.tabs.onUpdated.removeListener(listener);
}
});
});
});