gpt4 book ai didi

javascript - Chrome 扩展、追加元素和跨页面更改重新追加

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

我有一个 Chrome 扩展程序,当单击其按钮时,会将一个元素附加到当前页面。但是,我想跨页面保留该元素;即,如果用户单击链接,则会加载新页面,然后附加该元素。

我尝试使用window.onhashchange来检测页面更改,检查元素是否已附加,如果没有,则附加它,但这似乎根本没有任何影响。有关如何执行此操作或是否可能的任何提示? (最好是 JavaScript,不要使用 jquery)

最佳答案

我将如何做的一些一般描述是:
- 当用户单击按钮时,附加元素并将消息发送到后台以存储该选项卡(ID)
-添加监听器 chrome.tabs.onCreated.addListener 和 onUpdated(在 bg 脚本中)
-根据您存储的测试新创建和更新的选项卡
-如果新创建/更新的选项卡是您存储的选项卡(选项卡)的子选项卡,则注入(inject)元素附加脚本或将消息发送到内容脚本以附加元素

BG 脚本的示例:

chrome.tabs.onCreated.addListener(function(tab) {
console.log('tab id is'+tab.id);
console.log('opener is'+tab.openerTabId);
});

需要注意的一些事情:
-如果拖动链接,openerTabId 未定义(拖动链接的扩展)
-这些事件会被多次触发,因此如果您将消息发送到内容脚本以附加您的元素(或注入(inject)),请先检查它
类似的东西

if (yourElement) return;
else //append element

也许有更好/更简单的方法来实现你想要的......现在想不到

编辑:
单击按钮时实际上不需要初始消息传递,因为该按钮的监听器已经在 bg 脚本中,并且整个过程非常简单。

关于javascript - Chrome 扩展、追加元素和跨页面更改重新追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24537523/

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