0

Ich schreibe eine einfache Chrome-Erweiterung, die deaktivierte Dropdown-Menüs aktiviert.Chrome Extension - Ausführen von Javascript von Rechtsklickmenü

Wenn ich das gleiche Skript in der Konsole ausgeführt wurde, funktioniert es perfekt. Durch die Erweiterung ruft es die Funktionen auf, tut aber nichts.

Vielen Dank im Voraus für Ihre Hilfe.

manifest.json

{ 
"name": "4x6 Mac Menu", 
"manifest_version": 2 
"version": "0.1.4", 
"description": "Overrides Disabled Drop Down", 
"permissions": ["contextMenus"], 
"background": { 
"scripts": ["sample-click.js"] 
} 
} 

Probe-click.js

function Enable46(info, tab) { 
    console.log("Enable 4x6 was clicked."); 

    var inputs = document.getElementsByClassName('psSelect'); 
    for(var i = 0; i < inputs.length; i++) { 
     inputs[i].disabled = false; 
    } 

    console.log("Drop Enabled."); 

} 

chrome.contextMenus.create({ 
    title: "Enable 4x6", 
    contexts: ["page"], 
    onclick: Enable46, 
}); 

Ich habe auch versucht, einen anderen Ansatz einen Zuhörer als Hintergrund zu haben, und während ich das Konsolenprotokoll, das Ereignis führt die Funktion nicht aus

m anifest.json

{ 
    "name": "4x6 Enable", 
    "description": "Enable 4x6 Print Option on Mac", 
    "version": "0.1", 
    "manifest_version": 2, 
    "permissions": [ 
    "contextMenus", 
    "activeTab" 
    ], 

    "background": { 
    "persistent": false, 
    "scripts": ["bg.js"] 
    } 
} 

bg.js

/* Create a context-menu */ 
chrome.contextMenus.create({ 
    id: "myContextMenu", // <-- mandatory with event-pages 
    title: "4x6 Label", 
    contexts: ["all"] 
}); 

/* Register a listener for the `onClicked` event */ 
chrome.contextMenus.onClicked.addListener(function(info, tab) { 
    if (tab) { 
     /* Create the code to be injected */ 
     var code = [ 
     'var input = document.getElementsByClassName("psSelect");', 
     'for(var i = 0; i < inputs.length; i++) { inputs[i].disabled = false; }' 
     ].join("\n"); 

     console.log("Enable 4x6 was clicked."); 

     /* Inject the code into the current tab */ 
     chrome.tabs.executeScript(tab.id, { code: code }); 
    } 
}); 
+0

Versuchen Zusatz ' "*"' innerhalb Berechtigungen Array, Dies sollte Ihre Erweiterungsskripte über alle Seiten ausführen lassen. – Frankusky

+1

Ich schlage vor, Sie lesen die [Chrome-Erweiterungsübersicht] (https://developer.chrome.com/extensions/overview) (vielleicht zusammen mit den verlinkten Seiten aus der Übersicht). Der [Architekturabschnitt] (https://developer.chrome.com/extensions/overview#arch) enthält allgemeine Architekturinformationen, die Ihnen helfen sollen, zu verstehen, wie die Dinge im Allgemeinen organisiert/ausgeführt werden. Sie sollten auch [Inhaltsskripte] (https://developer.chrome.com/extensions/content_scripts) lesen. – Makyen

+1

@Frankusky, das ist einfach falsch. Siehe: [Berechtigungen deklarieren] (https://developer.chrome.com/extensions/declare_permissions) – Makyen

Antwort

0

Diese Lösung gearbeitet. Aus irgendeinem Grund musste es in 3 Dateien aufgeteilt werden.

manifest.json

{ 
    "name": "Enable Dropdown", 
    "description": "Enable Dropdown Menu", 
    "version": "0.3", 
    "manifest_version": 2, 
    "permissions": [ 
    "contextMenus", 
    "activeTab" 
    ], 

    "background": { 
    "persistent": false, 
    "scripts": ["bg.js"] 
    } 
} 

bg.js

/* Create a context-menu */ 
chrome.contextMenus.create({ 
    id: "myContextMenu", // <-- mandatory with event-pages 
    title: "Enable Dropdown", 
    contexts: ["all"] 
}); 

/* Register a listener for the `onClicked` event */ 
chrome.contextMenus.onClicked.addListener(function(info, tab) { 
    if (tab) { 
     /* Inject the code into the current tab */ 
     /* chrome.tabs.executeScript(tab.id, { code: code }); */ 
     chrome.tabs.executeScript(tab.id, {file: "content_script.js"}); 
    } 
}); 

content_script.js

var inputs = document.getElementsByClassName('psSelect'); 
    for(var i = 0; i < inputs.length; i++) { 
    inputs[i].disabled = false; 
} 

document.getElementById("PrintLabelsPrinter").value = "1-1"; 
Verwandte Themen