内容脚本和主要插件脚本之间的同步通信 - FireFox插件sdk

时间:2012-09-18 10:45:26

标签: message firefox-addon-sdk synchronous content-script

有没有办法在内容脚本和主插件脚本之间进行同步通信?

如果我为此制作一个方法,则该方法立即返回。那么有没有办法等待主脚本响应然后处理结果?

main.js

 worker.port.on("GetValue"),function(key)
 {
     worker.port.emit('GetValue',ss.storage[key]);
 }

内容脚本

//get value from local storage

function GetValueFromLocalStorage(key) 
{
    self.port.emit("GetValue", key);

    self.port.on("GetValue", function (value) 
        { 
                return value;

        }); 
}

如果这是可能的,那将是有益的,因为异步代码不干净和有组织,并且特别是如果我不得不多次访问此方法时写一个噩梦。

1 个答案:

答案 0 :(得分:2)

不,附加SDK设计为仅允许异步通信。最初的想法是,最终基于SDK的扩展将在单独的进程中运行,而内容脚本必须在网页的进程中运行。不确定这个计划是否仍在继续,但它可能是异步API的主要原因 - 否则在不破坏所有扩展的情况下改变为多进程是不可能的。

显然,您可以使用低级API,尤其是chrome authority来直接和同步访问网页。但是,如果代码可读性是您研究这个问题的唯一原因,那么您将离开记录良好且支持的地形,这可能不是最佳选择。