Chrome-Erweiterung Kontext Menü: wie Anhängen, div, um die Seite nach einem Klick auf Menüpunkt

Spielen, um mit dem Bau einer Chrome-Erweiterung. Im moment habe ich zusammen ein Kontextmenü. Wenn der Kontext-Menü-Eintrag klickt, feuert itemClicked() in meinem hintergrund-Skript context_menu.js:

function itemClicked(info, tab) {
     alert("clicked");
}

Den Alarm ausgelöst. Kann ich auch noch Sachen wie das senden von ajax-Anfragen durch itemClicked()

Jedoch kann ich nicht Anhängen, beliebige Elemente der Seite (oder DOM-manipulation jeglicher Art). Sogar etwas so einfaches wie das nicht funktioniert:

  var d = document.createElement('div');
  d.setAttribute("css", "width: 100px; height: 100px; background-color: red; position: fixed; top: 70px; left: 30px; z-index: 99999999999;");
  document.body.appendChild(d); 

So, ich habe versucht, fügen Sie den gleichen code in einen content-script:

chrome.contextMenus.onClicked.addListener(function(OnClickData info, tabs.Tab tab) {
  //code to append the input here
});

Aber es immer noch nicht funktionieren. Was mache ich falsch?

Wie kann ich das Kontext Menü Anhängen etwas an der Seite nach Klick?

Vielen Dank!

Edit: das hier ist mein manifest.json (entfernt die irrelevante Sachen wie name/Beschreibung...usw)

{


  "permissions": [
    "activeTab",        
    "tabs",
    "cookies",
    "contextMenus"
  ],

  "background": {
    "scripts": ["context_menu.js"]
  },
  "browser_action": {
    "default_icon": "icon16.png",
    "default_css": "popup.css",
    "default_popup": "popup.html"
  },

  "content_scripts": [
    {      
      "matches": ["<all_urls>"],
      "js": ["vendor/jquery-1.8.2.min.js", "config.js", "content_script.js"]   
    }
  ],

  "web_accessible_resources": ["popup.html"]

}
  • Hintergrund-Scripte wird nicht erlaubt, Zugriff auf das DOM, so sollten Sie nicht erwarten, dass, um zu arbeiten. Aber ich bin nicht zu sehen, warum der Inhalt Skript würde nicht erreichen, dass. Könnte Sie nach Ihrem manifest.json?
  • Hinzugefügt!
  • Anstatt den Inhalt Skript Listener für das Ereignis, haben Sie versucht, mit den hintergrund-Skript inject die notwendigen code?
  • das funktioniert tatsächlich - vielen Dank. Kann ich Spritzen ein content-script, das nicht ausgeführt werden, es sei denn, es ist ein Aufruf über executeScript? (aus meinem Verständnis, Inhalte, Skripte automatisch ausführen jedes mal, wenn ein tab geladen wird)
  • tatsächlich eingespritzte Inhalt Skript funktionierte nur, wenn ich einen alert... Es immer noch nicht zulassen, wird für jede DOM-manipulation :/
InformationsquelleAutor Michelle | 2013-11-11
Schreibe einen Kommentar