gpt4 book ai didi

javascript - 如何在 chrome 扩展程序中保持选项卡的状态

转载 作者:行者123 更新时间:2023-12-05 04:18:56 25 4
gpt4 key购买 nike

我正在尝试编写一个 chrome 扩展,它需要保持脚本将在其中执行的每个选项卡的状态。我的第一个想法是在后台页面中有一个 map ,将当前选项卡 ID 与选项卡状态相关联。

我刚刚看到 chome.tabs.getCurrent 方法不能用于获取执行内容脚本的页面的选项卡 ID。我看到经常推荐使用 chrome.tabs.getSelected 方法,但我不能使用这种方法,因为我的脚本可以在后台调用(例如,当页面自动重新加载时)并且那么标签就不能被选中。

所以我应该知道如何获取当前选项卡的 ID 或如何保持选项卡的状态。

最佳答案

其实我只需要访问sender.tab.id

背景页面中的脚本:

var states = new Object();
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
if(request.method == "setState") {
states[sender.tab.id] = request.state;
sendResponse({});
} else if(request.method == "getState") {
var state = states[sender.tab.id];
sendResponse(state);
} else {
sendResponse({}); // snub them.
}
});

以及内容脚本中我需要的代码:

function saveState(state) {
chrome.extension.sendRequest({method: "setState", state: state}, function() {});
}

function restoreState() {
chrome.extension.sendRequest({method: "getState"}, doTheJob);
}

function doTheJob(state) {
// do the job
console.log(state);

var newState;
if(state==undefined || state==null) {
newState = { count: 1 };
} else {
newState = state;
newState.count++;
}
saveState(newState);
}

restoreState();

关于javascript - 如何在 chrome 扩展程序中保持选项卡的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6744706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com