从扩展中访问document.activeElement.value

问题描述:

我仍在使用我的第一个Chrome扩展,并且遇到了问题。我正在尝试使用document.activeElement.value将一些文本插入文本字段。从扩展中访问document.activeElement.value

我无法让它工作。我已经使用了很多人的例子,并没有得到它的工作。

这是我的background.js中的代码,该扩展用于创建上下文菜单并插入文本。我假设在这一点上我的onClickHandler或点击事件有问题,但我很茫然。

chrome.runtime.onInstalled.addListener(function() { 
    var context = "all"; 
    var title = "Test"; 
    var id = chrome.contextMenus.create({"title": title, "contexts":[context], 
             "id": "context" + context}); 
}); 

// add click event 
chrome.contextMenus.onClicked.addListener(onClickHandler); 

//The onClicked callback function. 
function onClickHandler() { 
    document.activeElement.value = 'some text'; 
} 

好的,你需要一些背景。

首先,你在后台页面执行代码;因此,document是指背景页面本身

花点时间阅读Architecture Overview(如果您刚开始的话,也可能是页面的其余部分,这非常有帮助)。

如果您阅读该内容,则应该了解您需要内容脚本。一旦injected在活动选项卡中(并且the "activeTab" permission应该足以通过点击处理程序完成),则可以访问正确的document

但是,这个任务比您想象的要复杂。最近有关该主题的讨论;详情请参阅this question