2016-08-15 16 views
9

Kullanıcı, Command + B'ye geldiğinde popover'i gösterecek bir Safari Uzantısı oluşturmaya çalışıyorum. Aşağıdaki kodu kullanarak çalışır ancak her zaman pencereyi geçerli pencerede/sekmede değil farklı bir pencerede gösterir. Mevcut pencerede popover'ı farklı bir pencereye geçmek ve popover'ı açmak yerine görüntülemek istiyorum. Yalnızca bir Safari penceresi açıksa, ancak birden çok pencere açıkken sorun yaşamaya başladığında mükemmel çalışır.Safari Uzantısı Farklı Pencereyi Gösteriyor

Herhangi bir fikrin var mı?

Genel Sayfa File:

<script> 
    safari.application.addEventListener('message', function (e) { 
     if (e.name == 'Show Popover') { 
      safari.extension.toolbarItems[0].showPopover(); 
     } 
    }, false); 
</script> 

Enjekte İçerik: manuel burada ilk toolbarItem seçerek Bunun nedeni

document.addEventListener("keydown", keydown); 

function keydown(event) { 
    if (event.metaKey && event.keyCode == 66) { 
     event.preventDefault(); 
     safari.self.tab.dispatchMessage('Show Popover', {}); 
    } 
} 

cevap

6

;

Popover'ın hangi araç çubuğunda görünmesi gerektiğini belirlemeniz gerekir;

Böyle bir şey;

var toolBarID = 'my_id'; 
var activeItem = safari.extension.toolbarItems.filter(function (button) { 
    return button.identifier == toolBarID && button.browserWindow == safari.application.activeBrowserWindow; 
})[0]; 
Ardından showPopover işlevi için bu nesneyi kullanmak

;

activeItem.showPopover(); 

Umut bu işe yaradı gibi görünüyor

+0

Yüksek, yardımcı olur !! Yardımın için çok teşekkürler. Bir not, 'toolbarItemId' değerini gerçek araç çubuğumItemId'ye değiştirmem gerekti. Cevabınızı sadece gelecekteki referanslar için ve diğer kullanıcılar için belirtmek için düzenleyebilirsiniz. Tekrar teşekkürler. –

+0

@CharlieFish Sorun değil, ve benim hatam oxy - güncellendi :) – JayIsTooCommon

+0

Tekrar teşekkürler. Sadece 7 gün sürenin sonunda ödül kazanacağımın farkındasın. :) –

İlgili konular