从扩展访问document.activeElement.value

时间:2015-02-09 14:05:43

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

我还在使用我的第一个Chrome扩展程序,而且我已经碰壁了。我尝试使用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';
}

1 个答案:

答案 0 :(得分:0)

好的,你需要一些背景知识。

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

请花一点时间阅读Architecture Overview(如果您开始使用,可能会在页面的其他部分开始,这会非常有帮助。)

如果你读到它,你应该明白你需要一个内容脚本。在活动标签中injected(以及the "activeTab" permission应该足以通过点击处理程序执行此操作)后,您可以访问正确的document

然而,这项任务比你想象的要复杂得多。最近有一个关于这个主题的讨论;有关详细信息,请参阅this question