热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Chrome扩大插件演习——书签治理

媒介这是一篇关于Chrome扩大插件入门、Vue.js入门的小演习,功用是:在当前阅读的页面点击扩大图标,并点击保留以后,该页面就会存在你的新标签页中。实在就是一个可视书签的内容。

媒介

这是一篇关于Chrome扩大插件入门、Vue.js入门的小演习,功用是:在当前阅读的页面点击扩大图标,并点击保留以后,该页面就会存在你的新标签页中。实在就是一个可视书签的内容。
迎接人人指出代码的不足之处,许多时刻都是本身进修本身码代码,太须要他人的意见了。

Demo代码

代码戳这里

Chrome插件准备学问

起首给出一本参考的中文书本,在演习的历程中有帮到忙。固然,最威望的照样官方文档,只不过像我这类英文不太好星人只能拣本身看得懂的看了。别的另有官方文档的中文版,在英文版看不懂的时刻用。

  • manifest.json

    这个文件实在就是你的扩大插件的一个说明书。来人,上代码!

    {
    // 前三个必填
    "manifest_version": 2,
    "name": "bookmark",
    "version": "1.0",
    "description": "This extension shows bookmarks",
    "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
    },
    "chrome_url_overrides": {
    "newtab": "main.html"
    },
    "content_scripts": [
    {
    "matches": ["*://*/*"],
    "js": ["jquery-3.2.1.min.js", "html2canvas.js", "canvas2image.js","contentScripts.js"]
    }
    ],
    "permissions": [
    "tabs"
    ]
    }

    前三个必填的我不想说了,不过就是版本、称号之类的。

  • browser_action

这一项是设置你的扩大在阅读器窗口上的小图标,以及点击这个图标弹出的页面的,你会发明文档的写法跟我有些不一样,由于我有点懒,如许写字数比较少,省事儿。同学们不要学我呦。

  • chrome_url_overrides

    望文生义,重写chrome相干的页面。我这里要重写的是“new tab”,即新标签页,页面的内容进口在main.html。你还能够重写别的页面,比方书签治理页面等,能够参考文档

  • content_scripts

中文翻译过来应该叫内容剧本,它能够运转在你指定的页面当中,能够拿到指定页面的一些信息。指定的页面就是“matches”这一项了。在本演习中,能够看到用正则匹配了一切页面,由于毕竟是要做书签嘛。“js”这一项是一个数组,内里放的就是你在指定页面里用的剧本,前三个都是依靠,末了一个contentScripts.js才是真正搞事变的剧本,注重依靠是有递次的噢,实在与在标签里引标签是一回事变。

但实在,我总觉得这么个小demo或许用不到内容剧本,然则程度有限,找不到更好的完成要领,期待大牛与我交换。

  • permission

向chrome请求一些权限,这里我请求了tab 阅读器选项卡的权限,由于做书签时我须要当前tab的url。另有一些别的权限,请参考文档

思绪整顿

经由过程以上的说明书,应该大抵邃晓这个扩大插件是怎样回事了,接下来该斟酌怎样完胜利用。

  • 起首,点击扩大图标,弹出一个页面(popup.html),这个页面有个保留按钮,点击这个按钮应该有响应的事宜处置惩罚函数,此函数的功用就是猎取我当前阅读页面的截图以及url等信息,能够写一个js剧本,即popup.js

拿到url的信息比较简朴,chrome.tabs这个API下有一些methods,检察文档发明chrome.tab.query能够query到当前的选项卡,胜利拿到页面的url和title

然则题目来了,popup.html虽然是在我当前阅读的窗口上弹出来的,然则是与当前页面自力,如何能猎取当前页面的截图呢?

假如你在仔细看之前的内容的话,如今头脑蹦出来的应该是——content Scripts!
没错,是它 是它 就是它!上文提到了,这个内容剧本能够运转在指定的页面当中,而且貌似能够拿到当前页面的dom构造,所以,能够在contentScripts.js中运用html2canvas插件拿到截图,而且用canvas2html把图片转成base64花样,至于为何要转成base64,就要想一想拿到这个截图以后干什么了

  • 取得当前页面的截图以后,应该把它通报到我们重写的新标签页下(new tab,新选项卡),即main.html(所以转成base64是为了能把图片传到main.html,我发明只要如许通报才胜利),这个页面也应该有个剧本来吸收这个图片而且做一些处置惩罚,可取名为main.js

然后题目又来了,这几个页面完整自力,要怎样通报东西呢?所以接下去要引见的是chrome扩大页面间的通讯。

Chrome扩大页面间的通讯

在查阅这部份的材料时,还蛮头疼的。敕令有点多,而且比较长,关于我如许的懒人来讲简直是理不清。终究,许多东西不懂不懂,多看几遍也就摸出门道了。

  • 先来理一理,须要收发音讯的剧本们。

    popup.js -> contentScripts.js -> main.js

  • 查阅文档发明,发音讯有以下几种体式格局

    chrome.runtime.sendMessage({msg: msg})

    chrome.tab.sendMessage(tab的id, {msg: msg})

  • 吸收音讯的要领

    chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){})
    发送者发来的对象都在request中,能够用request.msg读取
    你有须要发还的音讯时能够用运用sendResponse

接下来就把这几个发送和吸收的要领写到各自的剧本中啦。注重发送音讯到content Script,必需运用chrome.tabs.sendMessage。

  • popup.js——chrome.tabs.sendMessage
  • contentScripts.js——chrome.runtime.onMessage.addListener和chrome.runtime.sendMessage
  • main.js——chrome.runtime.onMessage.addListener

至此,全部扩大插件的骨架都搭好了。
最前面是不是是提到了Vue,好吧实在一开始我是想做个vue的demo来进修进修vue的,只是没想到这个扩大页面上的东西太简朴,反而在进修Chrome扩大开辟花了更多的时候。Vue.js的相干内容也有,就是太简朴了,人人能够去看看源码。

题目

  • 截屏不是对一切页面都有用
  • 只想对页面窗口大小的页面举行截屏,不知道该怎样做
  • 是不是能够不运用html2canvas这类插件来完成截屏的结果

题目解决

关于截屏这个题目,终究找到了准确的要领。实在近在眼前,怪我没仔细看文档。

  • chromes.tabs.captureVisibleTab 便能够截取可见页面

虽然运用html2canvas要领烦琐,但也协助我邃晓了chrome扩大间的通讯要领,塞翁失马♪(^∀^●)ノ


推荐阅读
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 近期,微信公众平台上的HTML5游戏引起了广泛讨论,预示着HTML5游戏将迎来新的发展机遇。磊友科技的赵霏,作为一名HTML5技术的倡导者,分享了他在微信平台上开发HTML5游戏的经验和见解。 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • 使用ArcGIS for Java和Flex浏览自定义ArcGIS Server 9.3地图
    本文介绍了如何在Flex应用程序中实现浏览自定义ArcGIS Server 9.3发布的地图。这是一个基本的入门示例,适用于初学者。 ... [详细]
  • 本文最初发表在Thorben Janssen的Java EE博客上,每周都会分享最新的Java新闻和动态。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • This feature automatically validates new regions using the AWS SDK, ensuring compatibility and accuracy. ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • Flutter 2.* 路由管理详解
    本文详细介绍了 Flutter 2.* 中的路由管理机制,包括路由的基本概念、MaterialPageRoute 的使用、Navigator 的操作方法、路由传值、命名路由及其注册、路由钩子等。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
author-avatar
bell723_893
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有