Firefox 插件:如何将当前网址发送到后台脚本

问题描述 投票:0回答:1

我正在编写一个 Firefox 插件,当按下工具栏上的插件图标时,它会记录当前的 URL。

按下按钮时,后台脚本将调用本机应用程序。该本机应用程序应将当前 URL 写入 txt 文件。此时,我可以在点击插件按钮时写入文本文件。我能够将在 background.js 中创建的变量的内容写入文本文件。但我无法将当前 URL 传递给后台脚本。

该插件基于 Mozilla 的示例插件: https://github.com/mdn/webextensions-examples/tree/master/native-messaging

使用时

var url = window.location.href;
我获取加载脚本的 URL/位置。

问题:如何将当前URL传递给background.js,以便它将URL写入文本文件?

以下是脚本: 代码background.js:

var url = window.location.href;

/*
On startup, connect to the "ping_pong" app.
*/
var port = browser.runtime.connectNative("ping_pong");

/*
Listen for messages from the app.
*/
port.onMessage.addListener((response) => {
  console.log("Received: " + response);
});

/*
On a click on the browser action, send the app a message.
*/
browser.browserAction.onClicked.addListener(() => {
  console.log("Console logger");
  port.postMessage(url);
});

代码清单.json

{

  "description": "ping_pong",
  "manifest_version": 2,
  "name": "Native messaging start Python",
  "version": "1.0",
  "icons": {
    "48": "icons/message.svg"
  },

  "browser_specific_settings": {
    "gecko": {
      "id": "[email protected]",
      "strict_min_version": "50.0"
    }
  },

  "background": {
    "scripts": ["background.js"]
  },

  "browser_action": {
    "default_icon": "icons/message.svg"
  },
  
  "permissions": ["nativeMessaging"]
javascript firefox-addon firefox-addon-webextensions
1个回答
0
投票

这是一个老问题,但仍然可以为任何仍然想知道的人解答。

manifest.json

...
  "background": {
    "scripts": [
      "background.js"
    ]
  },
  "browser_action": {
    "default_icon": "icons/message.svg",
    "default_title": "sendURL"
  },
  "permissions": [
    "activeTab"
  ]
...

背景.js

browser.browserAction.onClicked.addListener( function () {
  browser.tabs.query( {
    active: true,
    currentWindow: true,
    windowType: 'normal' // probably unnecessary
  } ).then( function ( tab ) {
    console.log( tab[ 0 ].url );
  }, console.error
  );
} );

标题可以是任何内容(也可以什么都没有,这使其成为扩展名)。通常单击操作按钮会调用弹出窗口,但弹出窗口不是必需的。后台可以检测点击并查询当前正常(即不是弹出窗口,不是 devtools)窗口中的活动选项卡。 (可能没有必要指定“正常”,因为无论如何,只有正常窗口才应该获得浏览器操作按钮。)

activeTab
权限允许查询返回 URL。

© www.soinside.com 2019 - 2024. All rights reserved.