Во время разработки расширения Chrome столкнулся с трудностями при создании боковой панели с несколькими заголовками.

Согласно руководству setObject установите объект как содержимое боковой панели, но только с одним заголовком:

sidebar.setObject({ some: 'qwe' }, 'title');

И результат следующий:

enter image description here

Но моя цель - установить объект для удовлетворения следующего:

enter image description here

Я пытался использовать multi setObject, но, как я ожидал, он не добавляет данные, а перезаписывает их. Я знаю о setPage и возможности установить такой объект через JS, но меня интересует решение с простым Chrome API инструменты

3
Evgeniy 26 Фев 2015 в 11:25

2 ответа

Лучший ответ

Невозможно использовать setObject для этой цели, потому что он всегда удаляет предыдущие объекты (в строке 307), как в вашем тестировании. Таким образом, существует только один объект с одним разделом заголовка / заголовка.

Если вы посмотрите на источник панели боковой панели eventListener вы можете видеть, что он строит страницу, а не использует setObject, используя функции, которые недоступны для расширения, и строит это дерево само по себе (так что на самом деле нет чистого конструктора для этого типа представления, который может быть открыт. Но логику, необходимую для такой страницы боковой панели, легче понять в properties Sidebar Pane, чем eventListener Sidebar Pane, если вам не нужны представления с фильтрами и т. д.)

Чтобы получить представление, вы можете скопировать CSS из источника для страницы, которую вы предоставляете через setPage.

2
lossleader 3 Мар 2015 в 19:15

На самом деле это довольно просто. Вам необходимо избавиться от title, который является необязательным и, если он предоставляется, служит корнем < / strong> дерева выражений. (источник: DevTools API).

Следовательно, если вы вызовете setObject следующим образом:

var jsonObj = {
    first: {some: 'foo'},
    second: {some: 'bar'},
    third: {some: 'baz'}
};

sidebar.setObject(jsonObj);

Ты получишь :

enter image description here

Обратите внимание, что вывод немного отличается от боковой панели Прослушиватели событий , поскольку мы просто выводим объект JSON. Но это может соответствовать вашим потребностям, и лично я считаю полезным иметь сводку, не открывая каждый элемент. Если вам нужно именно то, что отображается на боковой панели Event Listener , думаю, вам нужно посмотреть дальше setObject

2
Michael P. Bazos 3 Мар 2015 в 00:58