form-copypasta-crx/background.js
Ray 2b97d44a4f Added support for paste with hidden elements
Added support for no parent form node found
Refactored
2024-02-01 20:31:47 +00:00

48 lines
1.3 KiB
JavaScript

chrome.runtime.onInstalled.addListener(function() {
chrome.contextMenus.create({ "id": "copy_form", "title": "Copy Form", "contexts": ["editable"] });
chrome.contextMenus.create({ "id": "paste_form", "title": "Paste Form", "contexts": ["editable"], enabled: false });
chrome.contextMenus.create({ "id": "paste_form2", "title": "Paste Form (with Hidden)", "contexts": ["editable"], enabled: false });
});
chrome.contextMenus.onClicked.addListener(function(msg, tab) {
switch (msg.menuItemId) {
case "copy_form":
copyFormContextMenu(tab);
break;
case "paste_form":
pasteFormContextMenu(tab, false);
break;
case "paste_form2":
pasteFormContextMenu(tab, true);
break;
default: break;
}
});
function copyFormContextMenu(tab) {
chrome.tabs.sendMessage(tab.id, { action: "copy" }, function(response) {
if (response) {
chrome.storage.local.set({ 'clipboard': JSON.stringify(response) },function() {
chrome.contextMenus.update("paste_form", { enabled: true });
});
} else {
// Reload required
}
});
}
function pasteFormContextMenu(tab, includeHiddenEl) {
chrome.storage.local.get('clipboard', function(response) {
try {
let msgData = JSON.parse(response.clipboard);
msgData.action = (includeHiddenEl === true ? "paste2" : "paste");
chrome.tabs.sendMessage(tab.id, msgData);
} catch (err) {
// Do nothing
}
});
}