我有一个background.js 文件,它可以拦截网络请求并替换User-Agent
header 的值。按照下面的 list ,它工作正常。
{
"manifest_version": 2,
"name": "TamperHeaders",
"description": "Replace HTTP headers and parameters",
"version": "1.0",
"browser_action": {
"default_icon": "38.png"
},
"background": {
"scripts": ["background.js"]
},
"permissions": [
"webRequest",
"webRequestBlocking",
"<all_urls>"
]
}
我想添加一个 default_popup
并向该弹出窗口添加一个按钮,说“点击我!”,然后单击该按钮后,扩展程序应该被激活(即,background.js应该开始运行)。我怎样才能实现这个目标?
最佳答案
Message passing允许您的扩展在不同上下文之间进行通信。例如后台脚本、内容脚本和弹出窗口。
要实现您想要做的事情,您需要在单击按钮时从弹出窗口发送一条消息到后台脚本以注册您的 chrome.webRequest 监听器。例如:
popup.html:
<html>
<head>
<script type="text/javascript" src="popup.js"></script>
</head>
<body>
<button id="my-button">Click me</button>
</body>
</html>
popup.js:
document.addEventListener('DOMContentLoaded', function() {
var button = document.getElementById('my-button');
button.addEventListener('click', function() {
chrome.runtime.sendMessage({action: 'STARTLISTENER'});
window.close(); // Closes the popup
});
});
背景.js
chrome.runtime.onMessage.addListener(
function (request, sender, sendResponse) {
if (request.action == 'STARTLISTENER') {
chrome.webRequest.onBeforeRequest.addListener(function (details) {
// web request logic
};
}
}
)
除了这些更改之外,您的 manifest would need updating to include popup.html .
注意,由于内容安全策略 you can't use <script>
tags inline在 HTML 中。因此有单独的 popup.html 和 popup.js 文件。
关于javascript - 如何添加一个按钮来启用后台脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36354587/