Скопировать ссылку 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 в случае, если вы заботитесь только о выделенном тексте.

Другие вопросы по тегам