我有一个Chrome扩展程序,当单击其按钮时,会将一个元素附加到当前页面。但是,我想在页面中保留该元素;即,如果用户点击链接,则加载新页面,然后附加该元素。
我尝试使用window.onhashchange
来检测页面更改,检查是否附加了元素,如果没有,请附加它,但这似乎没有任何影响。有关如何执行此操作的提示,或者是否可能? (最好是在javascript中,没有jquery)
答案 0 :(得分:1)
一些一般性描述我将如何做,将是:
- 当用户单击该按钮时,追加元素并将发送消息发送到后台存储该选项卡(ID)
-add listeners chrome.tabs.onCreated.addListener& onUpdated(在bg脚本中)
- 根据您存储的新标签新建和更新的标签
- 如果新创建/更新的选项卡是存储选项卡(选项卡)的子项,则为元素追加注入脚本或将msg发送到内容脚本以追加元素
以BG脚本开头的示例:
chrome.tabs.onCreated.addListener(function(tab) {
console.log('tab id is'+tab.id);
console.log('opener is'+tab.openerTabId);
});
要小心的事情:
如果拖动链接,则未定义-openerTabId(拖动链接的扩展名)
- 多次触发事件,因此如果您要将msg发送到内容脚本以附加元素(或注入),请先检查它
if (yourElement) return;
else //append element
也许有更好/更简单的方法来实现你想要的......现在想不到它
修改强>
单击按钮时实际上不需要初始消息,因为该按钮的监听器已经在bg脚本中,整个过程非常简单。