我正在使用我的第一个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);
};
答案 0 :(得分:0)
错误document
。您的代码在后台页面中执行,后台页面是您看到的页面中的单独页面(因此是单独的document
)。
您需要在页面中注入内容脚本才能为您执行execCommand
,或者依赖info
中返回的数据,以防您只关心所选文字。