2016-08-15 10 views
9

ユーザーがCommand + Bを押すとPopoverが表示されるSafari拡張機能を構築しようとしています。下のコードを使用すると、常に現在のウィンドウ/タブではなく、別のウィンドウにポップオーバーが表示されます。私は、別のウィンドウに切り替えてポップオーバーを開くのではなく、現在のウィンドウにポップオーバーを表示したいと思います。 Safariウィンドウが1つしか開いていない場合でも、複数のウィンドウが開いているときに問題が発生しても、完全に機能します。Popover別のウィンドウを表示するSafari拡張機能

アイデア?

グローバルページはファイル:

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

注入コンテンツ

document.addEventListener("keydown", keydown); 

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

答えて

6

手動ここで最初toolbarItemを選択しているためです。

safari.extension.toolbarItems[0].showPopover(); 

ポップオーバーが表示される必要があるツールバーを決定する必要があります。

このようなものです。

var toolBarID = 'my_id'; 
var activeItem = safari.extension.toolbarItems.filter(function (button) { 
    return button.identifier == toolBarID && button.browserWindow == safari.application.activeBrowserWindow; 
})[0]; 

次に、このオブジェクトをshowPopover関数に使用します。

activeItem.showPopover(); 

希望これは、それが働いたように見えるという大きな

+0

に役立ちます!ご助力ありがとうございます。私は 'toolbarItemId'を私の実際のtoolbarItemIdに変更しなければならないことに注意してください。あなたの答えを編集して将来の参照や他のユーザーのためだけに言えばいいですね。再度、感謝します。 –

+0

@CharlieFish問題はありません。そして、おかげで私の悪い更新されました:) – JayIsTooCommon

+0

もう一度ありがとうございます。ちょうどあなたが知っているので、私は7日間の終わりに賞金を授与されます。 :) –

関連する問題