【问题标题】:Retrieve TargetElement with targetElementId for Firefox Addon使用 Firefox 插件的 targetElementId 检索 TargetElement
【发布时间】:2020-05-01 20:04:56
【问题描述】:

我正在尝试为 Firefox 创建一个附加组件,它使我能够从基于 REST 的服务器输入密码到输入字段。

为了实现这一点,我在 Firefox 的插件中添加了上下文菜单。

这些上下文菜单的监听器实现如下:

add_listener(menu_id, listener) {
  const click_listener = function(info, tab) {
  if ('' + info.menuItemId == menu_id + '') {
    console.debug(info.targetElementId);
    listener(browser.menus.getTargetElement(info.targetElementId));
    }
  };
  this.listeners.push(click_listener);
  browser.contextMenus.onClicked.addListener(click_listener);
}

for (const pwDataEntry of pwDataSet.entries) {
  const entryId = menu_service.create_sub_menu(null, pwDataEntry.key, setId);
  menu_service.add_listener(entryId, element => {
    console.debug(element);
    element.value = pwDataEntry.content;
  });
}

我正在处理来自Firefox 的用于创建菜单的文档和ClickData (=info) 的文档。这里的文档说:

目标元素I 整数。创建上下文菜单的元素的标识符(如果有)。在内容脚本中使用 menus.getTargetElement() 来定位元素。请注意,这不是页面元素的 id 属性。

如您所见,我已经完全按照文档说明实现了元素的检索。 事情是 Firefox 告诉我,它没有找到该元素:

3056573 background.js:32:25
null  background.js:120:29
element is null background.js:121

background.js:32:25 -> console.debug(info.targetElementId);
background.js:120:29 -> console.debug(element);
background.js:121 -> element.value = pwDataEntry.content;

如果您需要有关代码的更多信息,我已经上传了整个 background.js here

我希望你知道为什么它没有按文档说明工作以及我哪里出错了......

提前感谢您的帮助和时间:)

【问题讨论】:

    标签: javascript html firefox firefox-addon-sdk


    【解决方案1】:

    你正在做的事情不会奏效。重要的部分是文档中的这句话:

    在内容脚本中使用 menus.getTargetElement() 来定位元素。

    但是,您在后台脚本中调用 menus.getTargetElement()。您必须将该 ID 从后台脚本发送到您的内容脚本。 Mozilla 为此提供了一个名为menu-remove-element 的示例。

    menus.getTargetElement 的documentation 也有一个非常简短的示例,它使用browser.tabs.executeScript 和targetElementId。

    【讨论】:

    • 啊谢谢 :) 我并没有真正理解后台脚本和内容脚本之间的区别......对于其他阅读本文的人,我通过在我的内容脚本中添加一个右键单击侦听器解决了这个问题(标记单击的输入字段)并通过“browser.tabs.sendMessage()”从后台脚本 ping 内容脚本
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多