Скопировать ссылку Href в расширение Chrome
Я работаю над своим первым расширением Chrome. Очень начинающий с javascript, так что терпите меня...
По сути, я написал расширение для Chrome, которое добавляет новый элемент контекстного меню, когда вы щелкаете правой кнопкой мыши по гиперссылке. Я хочу, чтобы при щелчке по этому пункту контекстного меню он копировал значение href гиперссылки, по которой вы щелкаете (по сути, это дублирует пункт меню "Копировать адрес ссылки", но позже я буду использовать подстроки для копирования). только определенная часть URL).
Что я могу сделать, чтобы установить переменную sUrl в href текущей гиперссылки? И тогда как правильно передать эту переменную в буфер обмена, используя execCommand('copy')?
Мой manifest.json ниже:
{
"name": "Copy SKU",
"description": "Add a context menu item to copy SKU from webpages",
"version": "1.0",
"permissions": ["contextMenus", "clipboardWrite"],
"background": {
"persistent": false,
"scripts": ["background.js"]
},
"manifest_version": 2
}
Мой текущий background.js ниже:
// Set up context menu at install time.
chrome.runtime.onInstalled.addListener(function() {
var context = "link";
var title = "Copy SKU";
var id = chrome.contextMenus.create({"title": title, "contexts":[context],
"id": "context" + context});
});
// add click event
chrome.contextMenus.onClicked.addListener(onClickHandler);
// The onClicked callback function.
function onClickHandler(info, tab) {
var sUrl = HYPERLINK HREF
document.execCommand('copy', false, null);
};
1 ответ
Неправильно document
, Ваш код выполняется на фоновой странице, которая является отдельной страницей (и, следовательно, отдельной document
) со страницы, которую вы видите.
Вам либо нужен Сценарий содержимого, введенный на странице, чтобы сделать execCommand
для вас, или полагаться на данные, возвращенные в info
в случае, если вы заботитесь только о выделенном тексте.