0

拡張機能の古いバージョン(XUL/Components.interfaces.nsIPrefService)から新しいバージョン(WebExtension/browser.storage.sync)に設定を移行する必要があります。これを行うために、Mozillaの移行サンプル(埋め込みwebextension-overlay)からコードをインポートしました。この例では、browser.runtime.sendMessageを使用して埋め込まれたWeb拡張機能から、埋め込みWeb拡張機能からオーバーレイコードにデータが送信されます。それはうまく動作します。しかし、方向を変更する必要があります。これは、コードのオーバーレイ部分のbrowser.runtime.sendMessageを呼び出してメッセージが表示されます。 browser.runtime.sendMessageは関数ではありません。 これは変更されたオーバーレイコードです。XULから組み込みWebExtensionにメッセージを送信する方法

{ 
    const addonId = "[email protected]"; 
    const { 
    AddonManager, 
    } = Components.utils.import("resource://gre/modules/AddonManager.jsm", {}); 

    AddonManager.getAddonByID(addonId, addon => { 
    const baseURI = addon.getResourceURI("/"); 

    const { 
     LegacyExtensionsUtils, 
    } = Components.utils.import("resource://gre/modules/LegacyExtensionsUtils.jsm"); 

    const myOverlayEmbeddedWebExtension = LegacyExtensionsUtils.getEmbeddedExtensionFor({ 
     id: addonId, resourceURI: baseURI, 
    }); 

    myOverlayEmbeddedWebExtension.startup().then(({browser}) => { 
     dump(`${addonId} - embedded webext started\n`); 
     // My code 
     browser.runtime.sendMessage({msg:"update-settings", data:my_data}); 
     /* Original Mozilla code 
     browser.runtime.onMessage.addListener(msg => { 
     dump(`${addonId} - received message from embedded webext ${msg}\n`); 
     console.log(`===${addonId} - received message from embedded webext ${msg}\n`); 
     }); 
     */ 
    }).catch(err => { 
     Components.utils.reportError(`${addonId} - embedded webext startup failed: ${err.message} ${err.stack}\n`); 
     console.log(`===${addonId} - embedded webext startup failed: ${err.message} ${err.stack}\n`); 

    }); 
    }); 
} 

私は間違っていますか?

答えて

1

browser.runtime.onConnectを使用してレガシーアドオンの受信ポートを待機し、埋め込みWebExtensionからbrowser.runtime.connect()を呼び出してportを開きます。 onConnectリスナーは、マイグレーションプロセス専用のポートだけを使用するように、connectコールに名前を設定する必要があります。

例は次のとおりです。https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Embedded_WebExtensions#Connection-oriented_messaging

関連する問題