Chrome扩展程序,追加元素&跨页面更改重新附加

时间:2014-07-02 17:34:25

标签: javascript html google-chrome google-chrome-extension

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

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

1 个答案:

答案 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脚本中,整个过程非常简单。