在开发Chrome扩展时,在创建多标题侧边栏窗格时遇到了困难。
根据手册setObject
设置对象作为边栏内容,但只有单个标题:
sidebar.setObject({ some: 'qwe' }, 'title');
结果如下:
但我的目标是设置对象以满足以下条件:
我试图使用多setObject
,但是,正如我所料,它不会附加数据,它会覆盖它。我知道setPage
,以及通过JS设置这样的对象的能力,但我对使用纯铬API的解决方案感兴趣
工具
答案 0 :(得分:2)
这实际上非常简单。您必须摆脱title
, 可选 ,如果提供,则用作 root < / strong>表达式树。 (来源:DevTools API)。
因此,如果您按以下方式致电setObject
:
var jsonObj = {
first: {some: 'foo'},
second: {some: 'bar'},
third: {some: 'baz'}
};
sidebar.setObject(jsonObj);
你会得到:
请注意,与事件监听器侧边栏相比,输出略有不同,因为我们只是输出一个JSON对象。但这可能符合您的需要,而且我个人觉得有用的事实是总结而不必打开每个元素。如果您确切需要事件监听器侧栏中显示的内容,我猜您必须进一步查看setObject
答案 1 :(得分:2)
不能将setObject用于此目的,因为它总是在测试中删除以前的对象(在307行)。所以只有一个对象有一个标题/标题部分。
如果您查看eventListener Sidebar Pane的来源,您可以看到它正在构建页面而不是使用setObject
,使用扩展程序无法使用的函数,并构建此树它本身就是这样的(因此对于这种视图类型没有真正的干净构建器可以暴露。但如果你不这样,那么在properties Sidebar Pane中{{3}}比eventListener Sidebar Pane
更容易理解这种侧边栏页面所需的逻辑。需要过滤视图/等。)
要了解一下,您可以通过setPage
将CSS复制到您提供的页面的源代码中。