0

我正在寫一個簡單的Chrome擴展程序,它可以禁用下拉菜單。Chrome擴展程序 - 從右鍵菜單運行Javascript

如果我在控制檯中運行這個相同的腳本,它完美的工作。然而,通過擴展它調用函數,但什麼都不做。

非常感謝您的幫助。

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"] 
} 
} 

樣品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, 
}); 

我也嘗試另一種方法有一個監聽器爲背景,而我得到的控制檯日誌中,事件實際上並未執行該功能

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

嘗試增加' 「*」'內權限陣列,這應該讓你通過所有頁面執行你的擴展腳本 – Frankusky

+1

我建議你閱讀[Chrome擴展概述](https://developer.chrome.com/extensions/overview)(也許連同從概述鏈接的頁面)。 [體系結構部分](https://developer.chrome.com/extensions/overview#arch)具有全面的體系結構信息,這些信息應該有助於您理解組織/完成情況的方式。您還需要閱讀[內容腳本](https://developer.chrome.com/extensions/content_scripts)。 – Makyen

+1

@Frankusky,這是錯誤的。請參閱:[聲明權限](https://developer.chrome.com/extensions/declare_permissions) – Makyen

回答

0

該解決方案的工作。無論出於何種原因,它必須分成3個文件。

的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"; 
相關問題