复制Chrome扩展程序中的链接Href

时间:2014-12-18 19:05:32

标签: javascript google-chrome google-chrome-extension contextmenu execcommand

我正在使用我的第一个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 个答案:

答案 0 :(得分:0)

错误document。您的代码在后台页面中执行,后台页面是您看到的页面中的单独页面(因此是单独的document)。

您需要在页面中注入内容脚本才能为您执行execCommand,或者依赖info中返回的数据,以防您只关心所选文字。