7

Ich entwickle eine Chrome-Erweiterung und habe ein Problem. Ich habe dem Kontextmenü von Chrome ein Element hinzugefügt und möchte ein Popup-Fenster öffnen, wenn auf das Menüelement geklickt wird. Mein Code sieht wie folgt aus:Popup-Fenster im Kontextmenü der Chrome-Erweiterungen

function popup(url) { 
window.open(url, "window", "width=600,height=400,status=yes,scrollbars=yes,resizable=yes"); 
} 

chrome.contextMenus.create({"title": "Tumblr", "contexts":["page","selection","link","editable","image","video","audio"], "onclick": popup('http://example.com')}); 

Aber dieser Code nicht funktioniert, wie ich will. Das Popup-Fenster erscheint nicht nach einem Klick auf das Kontextelement, sondern nach einer Aktualisierung der Erweiterung in den Einstellungen der Chrome-Erweiterung.

Vielen Dank im Voraus!

+0

Yap. Ich benutze Version 2. Aber wie kann ich das sonst machen? Ich bin nicht viel in Javascript geschult. –

+0

@chaohuang Es gibt keinen Inline-Event-Handler im OP-Code. –

Antwort

5
chrome.contextMenus.create({... "onclick": popup('http://example.com')}) 

ruft die Funktion popup sofort auf, wodurch ein Popup geöffnet wird. Sie müssen einen Verweis auf eine Funktion übergeben. Um den Code zu arbeiten, wickeln Sie den Funktionsaufruf in einer Funktion:

chrome.contextMenus.create({ 
    "title": "Tumblr", 
    "contexts": ["page", "selection", "link", "editable", "image", "video", "audio"], 
    "onclick": function() { 
     popup('http://example.com'); 
    } 
}); 

window.open() kann verwendet werden, um ein Popup zu erstellen. Eine alternative Methode (nur um Sie wissen zu lassen, dass sie existiert) ist chrome.windows.create.

+0

Großartig! Es funktioniert perfekt. Danke vielmals! –