咱們在上網時,經常須要把剛興趣的文章記錄下來,方便之後繼續細看。若是記錄爲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