2016-08-15 2 views
9

Ich versuche eine Safari Extension zu erstellen. Wenn ein Benutzer auf Command + B klickt, wird das Popover angezeigt. Mit dem folgenden Code funktioniert es, zeigt aber immer das Popover in einem anderen Fenster als dem aktuellen Fenster/Tab an. Ich möchte, dass das Popover im aktuellen Fenster angezeigt wird, anstatt in ein anderes Fenster zu wechseln und das Popover dort zu öffnen. Es funktioniert perfekt, wenn nur ein Safari-Fenster geöffnet ist, aber Probleme auftreten, wenn mehrere Fenster geöffnet sind.Safari Extension Zeige Popover Anderes Fenster

Irgendwelche Ideen? Datei

Globale Seite:

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

injizierte Inhalt:

document.addEventListener("keydown", keydown); 

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

Antwort

6

Dies liegt daran, dass Sie manuell die erste ToolBarItem Auswahl hier;

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

Sie müssen bestimmen, welche SymbolleisteItem der Popover angezeigt werden muss;

So etwas wie das;

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

Sie verwenden dieses Objekt dann für die showPopover-Funktion;

activeItem.showPopover(); 

hoffe, das hilft

+0

groß, dass aussieht wie es funktioniert !! Vielen Dank für Ihre Hilfe. Eine Anmerkung ist, dass ich 'toolbarItemId' zu meiner tatsächlichen toolbarItemId ändern musste. Wäre nett, wenn Sie Ihre Antwort bearbeiten könnten, um das nur für zukünftige Referenz und für andere Benutzer zu erwähnen. Danke noch einmal. –

+0

@CharlieFish Kein Problem, und oops mein Bad - aktualisiert :) – JayIsTooCommon

+0

Nochmals vielen Dank. Nur damit Sie wissen, dass ich das Kopfgeld am Ende der 7 Tage vergeben werde. :) –

Verwandte Themen