从扩展中访问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。