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

news/2024/5/18 16:29:45

我们在上网时,常常需要把刚兴趣的文章记录下来,方便以后继续细看。如果记录为Markdown格式的话,还可以方便的把文章链接加入到自己创作的文章内。

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

[Title](URL)

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

添加键盘快捷键的方法

Chrome提供了Command API,可以通过它来添加触发Chrome Extension中操作的快捷键。可以在manifect.json内声明如下:

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

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

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

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

拷贝到剪贴板的方法

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

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

需要执行操作的时候,会把内容写入此textarea,然后执行命令完成剪贴动作:

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

整合后的js代码如下:

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 Chrome


http://www.niftyadmin.cn/n/2455066.html

相关文章

C++模板:字典树

//插入 void insert(char *s,char *s1){for(int lstrlen(s),x0,i0;i<l;i){if(!trie[x].son[s[i]-a])trie[x].son[s[i]-a]cnt;xtrie[x].son[s[i]-a];if(il-1)strcpy(trie[x].hash,s1);} }//查找 int find(char *s){for(int lstrlen(s),x0,i0;i<l;i){if(!trie[x].son[s[i]-…

001-JAVASCRIPT————一个面向对象的跨平台脚本语言。

JAVASCRIPT————一个面向对象的跨平台脚本语言。 什么是面相对象&#xff1f; 什么是跨平台&#xff1f; 什么是脚本&#xff1f; HTML文件必须在浏览器里执行JS文件必须嵌入到HTML文件里才能执行凡是不能独立执行需要依赖其他程序的&#xff0c;通常都叫做脚本。 JS的特…

PD name 和 comment 互换

1 PowerDesigner中批量根据对象的name生成comment的脚本 执行方法&#xff1a;Open PDM -- Tools -- Execute Commands -- Run Script ------------------------------------------------------------------------ Option Explicit--ValidationMode TrueInteractiveMode im_B…

mongodb 监控工具 mongo-monitor 安装部署

mongo 集群监控工具 mongo-monitor 安装部署 调试mongodb 集群期间发现一个小神器&#xff0c;不敢独享&#xff01;相关介绍如下&#xff1a;mongo-monitor CLI是一个简洁和简单的工具来检查MongoDB的服务&#xff0c;在集群调试升级期间&#xff0c;故障排查&#xff0c;添加…

笔记:lucene学习

流程&#xff1a; 创建索引库&#xff1a; 1&#xff09; 创建JavaBean对象 2&#xff09; 创建Docment对象 3&#xff09; 将JavaBean对象所有的属性值&#xff0c;均放到Document对象中去&#xff0c;属性名可以和JavaBean相同或不同 4&#xff09; 创建IndexWriter对象…

抓包工具Charles简单使用介绍

一是拦截别人软件的发送的请求和后端接口&#xff0c;练习开发。二是自己后端返回的response拦截修改后再接收以达到测试临界数据的作用。三写脚本重复拦截抓取别人的数据。四支持流量控制&#xff0c;可以模拟慢速网络以及等待时间&#xff08;latency&#xff09;较长的请求。…

基于cygwin构建u-boot(五)结尾:shell 工具

结尾&#xff0c;基于cygwin对u-boot的处理&#xff0c;很大一部分都是再处理 路径等相关的问题&#xff0c;只有一个涉及到gcc的参数配置。 为了达到顺利编译的目的&#xff0c;使用shell下的部分工具进行处理。 1、sed sed简单说&#xff0c;是一种按照特定处理方式&#xff…

笔记:shiro与spring整合

官方网站&#xff1a;http://shiro.apache.org/spring.html 视频来自于&#xff1a;http://www.java1234.com/ 1.建表&#xff1a;用户表t_user、角色表t_role、权限表t_permission CREATE DATABASE test ;USE test;DROP TABLE IF EXISTS t_permission;CREATE TABLE t_permis…