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 });
}
});
嘗試增加' 「*」'內權限陣列,這應該讓你通過所有頁面執行你的擴展腳本 – Frankusky
我建議你閱讀[Chrome擴展概述](https://developer.chrome.com/extensions/overview)(也許連同從概述鏈接的頁面)。 [體系結構部分](https://developer.chrome.com/extensions/overview#arch)具有全面的體系結構信息,這些信息應該有助於您理解組織/完成情況的方式。您還需要閱讀[內容腳本](https://developer.chrome.com/extensions/content_scripts)。 – Makyen
@Frankusky,這是錯誤的。請參閱:[聲明權限](https://developer.chrome.com/extensions/declare_permissions) – Makyen