# 編寫第二個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代碼以下:spa

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 Chromecode

相關文章
相關標籤/搜索