# 编写第二个Chrome Extension+Copy URL+Title

咱们在上网时,经常须要把刚兴趣的文章记录下来,方便之后继续细看。若是记录为Markdown格式的话,还能够方便的把文章连接加入到本身创做的文章内。html

今天编写的小工具,就是一个Chrome Extension,当用户在当前页面上按快捷键Command+Shift+Y的时候,能够把当前页面的标题和URL组合保存到剪贴板,以下形式:chrome

[Title](URL)

在阅读此文以前,若是你没有看过# 编写第一个Chrome Extension - 掘金,建议首先阅读此文。json

添加键盘快捷键的方法

Chrome提供了Command API,能够经过它来添加触发Chrome Extension中操做的快捷键。能够在manifect.json内声明以下:app

{
    "commands": {
        "Run": {
            "suggested_key": {
              "default": "Ctrl+Shift+Y",
              "mac": "Command+Shift+Y"
        },
        "description": "Toggle feature foo"
    },
}

这意味着在用户按下指定按钮(Ctrl+Shift+Y),会触发一个叫作Run的操做。工具

在后台页面中,您能够经过onCommand.addListener将处理程序绑定到清单中定义的命令。 例如:post

chrome.commands.onCommand.addListener(function(command) {
    console.log('Command:', command);//Run
  });

拷贝到剪贴板的方法

能够在你的background.html内添加一个textarea,用于拷贝到剪贴板的中转:学习

<textarea id="clipboard"></textarea>

须要执行操做的时候,会把内容写入此textarea,而后执行命令完成剪贴动做:url

document.execCommand("copy", false, null);

整合后的js代码以下:code

function copyTitleURL() {
  chrome.tabs.getSelected(null, function(tab) {
    copyToClipboard( "["+tab.title + "](" + tab.url +")");    
  });
}
function copyToClipboard(str) {
    var obj=document.getElementById("clipboard");
    if( obj ) {
        obj.value = str;
        obj.select();
        document.execCommand("copy", false, null);
    }
}
chrome.commands.onCommand.addListener(function(command) {
     if("Run" === command){
         copyTitleURL()
     }
});

总结

本文学习了Chrome Extension的键盘快捷键的声明和响应的方法,更多的Chrome Extension API请看官方文档chrome.commands - Google Chromehtm

相关文章
相关标签/搜索