2016-04-27 51 views
0

所以我正在构建一个私有扩展。 我有popup.html两个按钮,一个是复制,另一个是粘贴。Chrome扩展复制和粘贴

的逻辑是这样的:

  1. 按复印键弹出式按钮,并
  2. 转到复制某种形式的数据到其他网站,按粘贴和其他形式

所以注入我使用chrome.extension.sendMessage来检测点击弹出按钮并收听消息chrome.extension.onMessage.addListener我在哪里切换什么动作被触发执行一些脚本。

事情是,我可以得到的信息,我知道如何注入,但我不知道在哪里保存它,所以我可以在不同的选项卡中使用它。

有没有人有一些想法?

function dispatch(action) { 
    return function() { 
     chrome.extension.sendMessage({directive: action}, function(response) { 
      this.close(); 
     }); 
    } 
} 



document.addEventListener('DOMContentLoaded', function() { 

    copy = document.getElementById('copy'); 
    paste = document.getElementById('paste'); 

    copy.addEventListener('click', dispatch('COPY')); 
    paste.addEventListener('click', dispatch('PASTE')); 
}) 
+1

请注意'chrome.extension。*'消息传递函数已弃用:使用'chrome.runtime.sendMessage' /'onMessage'。 – Xan

回答

2

您可以使用本地存储来存储所需的值,粘贴并再次删除。

可以使用存储值在本地存储:

chrome.storage.local.set({ 'KEY': 'VALUE' }, function(){}); 

而且你可以从存储使用检索:

chrome.storage.local.get('KEY', function(items) { 
    //use the retrieved data with items.KEY 
}); 

而在manifest.json您需要添加以下行:

"permissions": ["storage"] 

例如,如果我使用的密钥是'SNT',我使用:

chrome.storage.local.set({ 'SNT': 'VALUE' }, function(){}); 

我找回它使用:

chrome.storage.local.get('SNT', function(items) { 
    $("#divID").text(items.SNT); 
}); 

如果你wan't看到一个工作示例,您可以检查this GitHub的仓库。

+0

感谢兄弟,我想使用localStorage,但多数民众赞成只是为选项卡,didint知道chrome.storage – Hiero

+0

@Hiero你甚至可以设置存储跨设备同步:) – rafaelcpalmeida

+0

我不知道为什么当我复制我recive一些像innerHTML这样的错误是未定义的,发生在你之前? – Hiero