所以,我popup.html有一个输入。如果您输入数据,popup.js则将数据发送到content.js并且它已经更改了页面上的某些内容。但更新后,页面上的更改消失了。我怎样才能使它们只有在输入新数据时才会保留和更改?
popup.html и popup.js
var input = document.querySelector('#inp');
var text = document.querySelector("#text");
var button = document.querySelector("#btn");
btn.addEventListener('click', function() {
var inp = input.value;
chrome.tabs.query({active: true, currentWindow: true}, function(foundTabs) {
const activeTab = foundTabs[0];
chrome.tabs.sendMessage(activeTab.id, {text: inp});//отправка значения инпута
})
});
<input type="text" id="inp">
<button id="btn">Send</button>
content.js:
chrome.runtime.onMessage.addListener(function(request) {
const txt = request.text; //пришло значение инпута
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
//вставка в html
});
});
我在输入中输入了一些数字,按下按钮,但在控制台中出现错误(见截图)

例子:
假设您使用类似的解决方案将数据从 发送
popup到。content-script在这种情况下,可以稍微改进一下。下面是一个独立的扩展代码。
要跟踪选项卡更新并存储数据结构,我建议在扩展程序中添加一个后台脚本。然后事情变得非常简单:
清单.json
popup.html
popup.js
内容脚本.js
背景.js
请注意,在
observedTabs重新加载扩展程序或浏览器之前,数据一直存在。如果您需要持续访问保存的数据,您可以使用localStorage或chrome.storage.local。