Firefox Add-on SDK:边栏和主脚本之间的通信对象
Firefox Add-on SDK: communicating objects between a sidebar and the main script
我正在破解我的第一个插件,所以我遇到的问题 运行 可能有一个明显的解决方案,或者我的一般方法有缺陷。
我正在使用Add-on SDK。我的 lib/main.js
包含一个对象 foo
。 data
目录有文件 sidebar.html
和 sidebar.js
。我想将 foo
传递给侧边栏脚本,然后根据 foo
的状态更改侧边栏。在最小的示例中,我将尝试显示对象。
最小示例:
main.js
:
var foo = {"a": "b", "c": "d"};
var bar = require("sdk/ui/sidebar").Sidebar({
id: "sb",
title: "foobar",
url: "./sidebar.html"
});
bar.show();
sidebar.html
:
<!DOCTYPE html>
<html>
<body>
<div id="foo-here">
<!-- to be modified by sidebar.js -->
</div>
</body>
<script type="text/javascript" src="sidebar.js"></script>
</html>
sidebar.js
:
var foodiv = document.getElementById("foo-here");
var str = "", o;
// magically get foo from main.js here
for (o in foo) {
if (foo.hasOwnProperty(o)) {
str += "[" + o + " is " + foo[o] + "]";
}
}
foodiv.innerHTML = str;
sidebar docs解释了如何监听来自主脚本的信号并在接收到信号时调用函数,但我不知道如何传递对象本身。
您链接的边栏文档中提到的 port.emit()
API 也需要第二个参数来传递对象。
我正在破解我的第一个插件,所以我遇到的问题 运行 可能有一个明显的解决方案,或者我的一般方法有缺陷。
我正在使用Add-on SDK。我的 lib/main.js
包含一个对象 foo
。 data
目录有文件 sidebar.html
和 sidebar.js
。我想将 foo
传递给侧边栏脚本,然后根据 foo
的状态更改侧边栏。在最小的示例中,我将尝试显示对象。
最小示例:
main.js
:
var foo = {"a": "b", "c": "d"};
var bar = require("sdk/ui/sidebar").Sidebar({
id: "sb",
title: "foobar",
url: "./sidebar.html"
});
bar.show();
sidebar.html
:
<!DOCTYPE html>
<html>
<body>
<div id="foo-here">
<!-- to be modified by sidebar.js -->
</div>
</body>
<script type="text/javascript" src="sidebar.js"></script>
</html>
sidebar.js
:
var foodiv = document.getElementById("foo-here");
var str = "", o;
// magically get foo from main.js here
for (o in foo) {
if (foo.hasOwnProperty(o)) {
str += "[" + o + " is " + foo[o] + "]";
}
}
foodiv.innerHTML = str;
sidebar docs解释了如何监听来自主脚本的信号并在接收到信号时调用函数,但我不知道如何传递对象本身。
您链接的边栏文档中提到的 port.emit()
API 也需要第二个参数来传递对象。