# 編寫第二個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

相關文章
相關標籤/搜索