Вы не сможете установить URL-адрес всплывающего окна на веб-URL (это должен быть URL-адрес safari-extension
), но вы можете иметь всплывающее окно, которое не содержит ничего, кроме iframe, и указать всплывающее окно для загрузки URL-адреса в iframe.
Самый простой способ сделать это — иметь прослушиватель «командных» событий в самом всплывающем окне (которое вы можете создать с помощью Extension Builder или API расширения; см. документы, если вам нужно освежить в памяти ).
safari.application.addEventListener("command", function (evt) {
if (evt.command == 'DoAddSymbaloo') {
document.querySelector('iframe').src = evt.userInfo;
// now let's show the popover
}
}, false);
Теперь вам нужно показать всплывающее окно. Чтобы всплывающее окно вообще стало видимым, его необходимо прикрепить к элементу панели инструментов. Я предполагаю, что вы уже сделали это, используя либо Extension Builder, либо API. Программно показать всплывающее окно можно с помощью метода showPopover
на его элементе панели инструментов. Итак, сначала вам нужно найти элемент панели инструментов, к которому вы прикрепили всплывающее окно. Из сценария всплывающего окна:
var myToolbarItem = safari.extension.toolbarItems.filter(function (ti) {
return ti.popover == safari.self;
})[0];
Это просто говорит: «Найдите элемент панели инструментов, всплывающее окно которого совпадает со мной, и назначьте этот элемент панели инструментов переменной myToolbarItem
».
Если вы хотите, и если всплывающее окно будет прикреплено только к одному элементу панели инструментов, вместо того, чтобы назначать найденный элемент панели инструментов myToolbarItem
, вы можете установить его как свойство объекта всплывающего окна, которое с точки зрения всплывающего окна является safari.self
:
safari.self.toolbarItem = safari.extension.toolbarItems.filter(function (ti) {
return ti.popover == safari.self;
})[0];
Это обеспечит удобный способ получить элемент панели инструментов, связанный с всплывающим окном, из любого места сценария или с глобальной страницы.
Теперь, объединив эти вещи:
safari.self.toolbarItem = safari.extension.toolbarItems.filter(function (ti) {
return ti.popover == safari.self;
})[0];
safari.application.addEventListener("command", function (evt) {
if (evt.command == 'DoAddSymbaloo') {
document.querySelector('iframe').src = evt.userInfo;
safari.self.toolbarItem.showPopover();
}
}, false);
(Отредактировано для упрощения окончательного сценария.)
person
chulster
schedule
16.10.2013