【问题标题】:Sharing Functions between Chrome ExtensionsChrome 扩展程序之间的共享功能
【发布时间】:2026-02-06 12:25:01
【问题描述】:

我正在为 Chrome 制作一个与另一个扩展 (B) 通信的扩展 (A)。我希望A 提供B 一个功能,但它不会发送。我可以发送字符串就好了。

A 具有以下代码。 rect 是这段代码中的函数。

chrome.extension.onRequestExternal.addListener(
    function(request, sender, sendResponse) {
       obj = {}
       obj.permisions = "all"
       obj.rect = Rect
       alert(obj.permisions+","+obj.rect)
       sendResponse(obj); 
});

...这段代码工作得很好。警报显示一个显示“全部”的框,然后打印出函数。

B 有以下代码。

chrome.extension.sendRequest(ext[i].id, {}, function(lib) {
    alert(lib.permisions+","+lib.rect)
});

这个警报显示“全部,未定义”。扩展之间不能传递函数吗?

【问题讨论】:

    标签: json google-chrome google-chrome-extension


    【解决方案1】:

    虽然您当然可以communicate between extensions,但您只能传递有效的 JSON。不幸的是,有效的 JSON 仅包括简单的数据类型(字符串、数字、布尔值、数组、对象* 或 Null)。

    一种方法是将函数作为字符串传递并在接收端使用eval。可能不安全,但可行的。

    * 虽然函数在技术上是 Object,但在此上下文中,Object 指的是上述简单数据类型的名称:值对。

    【讨论】: