Chrome谷歌页面翻译增强插件开发
最近想做一个Chrome的插件(看别的博客说其实叫插件不准确,应该叫拓展,大家叫习惯了就按习惯的来吧)。一开始咱先直接看了Chrome开发(360翻译)和chrome extensions(这个官方的文档拓展的方法和属性有表格比较好找,但得会科学上网),之后卡住了开始上网搜发现【干货】Chrome插件(扩展)开发全攻略这篇博客写的已经很全了,而且附带的GitHub上的demo也特别全。咱这里就稍微把咱做的插件遇到的问题写一写(几乎都是看文档和那个博客解决的)。
谷歌页面翻译增强插件
一:如何点击Popup中的按钮,操作当前打开的网页的DOM
坑:
- 给Popup.html中的button添加内联的click事件(会报安全策略不允许的错误)
解决:让Popup.html引入Popup.js文件,js文件通过id找到button添加click事件 - 在Popup.js里想办法获取到当前打开的网页的window对象操作其DOM(咱是找了很久也没找到获取到的方法)
解决:
方案一:在Popup.js里使用chrome.tabs.executeScript让页面执行一段代码或一个js文件(这个方案能在进行只是让页面执行js时使用)。
方案二: 在Popup.js里使用chrome.tabs.sendMessage发送给content-script(通过配置manifest.json的content_scripts插入到当前打开网页中的js文件)消息执行content-script中的代码(这个方案能在进行让页面执行js并接受返回消息时使用)。
二:如何进行数据的存储
咱想做的是先保存网页中的pre标签中的html,然后翻译此网页,然后将保存的pre内容进行还原。
保存网页中的pre标签中的内容
在Popup.js里使用chrome.tabs.sendMessage发送给content-script消息执行获取全部pre标签中的html返回给Popup.js,Popup.js使用localStorage进行保存。翻译此网页
在Popup.js里获取当前页面url,并进行谷歌翻译将保存的pre内容进行还原
在content-script中根据url判断是否是翻译过的页面,是的话给Popup发消息得到pre标签中的html,将当前页面的pre标签中的html替换为刚刚得到的。
注:咱原本想用长连接的,但翻译网页时网页变了,长连接就断了,所以只能互相发消息
三:如何得知页面是否处理过或是否可编辑了
因为是每个页面的状态所以,在翻译的页面使用DOM节点保存一下
Chrome谷歌页面翻译增强插件开发的更多相关文章
- Chrome-谷歌页面翻译增强插件开发
最近想做一个 Chrome 的插件(看别的博客说其实叫插件不准确,应该叫拓展,大家叫习惯了就按习惯的来吧).一开始咱先直接看了[Chrome 开发(360 翻译)](http://open.chrom ...
- windows如果在IE中用超链接打开谷歌页面
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\openChrome] @="URL:openChrome Protocol& ...
- 使用chrome查看页面元素的css样式
使用chrome查看页面元素的css样式 我们在写页面的时候,可能总是不知道怎么回事,就发现某个元素出现了问题,但是不知道为什么会这样,这时候,就需要使用强大的chrome了!!! 举例说明: 1. ...
- 使用 Headless Chrome 进行页面渲染 - 知乎专栏
使用 Headless Chrome 进行页面渲染 - 知乎专栏 使用 Headless Chrome 进行页面渲染 - 知乎专栏 这里我们使用 chrome-remote-interface 来远程 ...
- Chrome/谷歌开发者工具分析
Chrome/谷歌开发者工具还是要好好掌握一下,对于前端开发超级有用:https://developers.google.com/web/tools/chrome-devtools/ 1.js内存使用 ...
- chrome浏览页面常用快捷键
1.chrome浏览页面常用快捷键 Ctrl+N 打开新窗口. Ctrl+T 打开新标签页. Ctrl+W关闭当前标签 Ctrl + F4 关闭chrome浏览器 Ctrl+Tab 或 Ctrl+Pg ...
- Chrome划词翻译-Saladict
Saladict 沙拉查词是一款专业划词翻译扩展,为交叉阅读而生.大量权威词典涵盖中英日韩法德西语,支持复杂的 划词操作.网页翻译.生词本.PDF,以及 Vimium 全键盘操作 . 迄今为止最好用的 ...
- 使用Chrome测试页面响应性
如今我们都知道 响应式 的意思.作为开发者,我们常常开发一些响应式的应用.有很多工具可以帮助我们完成这个目的.某些人甚至使用付费扩展.然而,我用了一个东西,它就是 Google Chrome 浏览器. ...
- Chrome 谷歌开发者工具使用窍门
我们这里介绍主要的几块:Console.Source.Network Console 大家都有用过各种类型的浏览器,每种浏览器都有自己的特色,本人拙见,在我用过的浏览器当中,我是最喜欢Chrome的, ...
随机推荐
- HNUSTOJ-1257 You are my brother
1257: You are my brother 时间限制: 1 Sec 内存限制: 128 MB提交: 39 解决: 15[提交][状态][讨论版] 题目描述 Little A gets to ...
- 搜索专题: HDU1026Ignatius and the Princess I
Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- 源码编译Redis Desktop Manager | 懒人屋
原文:源码编译Redis Desktop Manager | 懒人屋 源码编译Redis Desktop Manager 2.3k 字 10 分钟 2019-10-10 文章背景 本 ...
- 剑指offer-删除链表中重复的结点-链表-python ***
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...
- 简单的物流项目实战,WPF的MVVM设计模式(一)
新建一个WPF项目,命名为WMS 然后分别新建文件夹,Data,Models,Views,ViewModels,Services,如下图所示 然后通过NuGet安装连个Nuget包,分别为SQLite ...
- 移动端布局的思考和rem的设置
如下方法如有不正确的地方,欢迎指正 前提: 设置稿750px 目标:40px = 1rem js设置方法:(小于等于750屏幕等比缩放) ;(function (doc, win, undefined ...
- Centos6.6安装apache2.4
安装apr请参考: http://www.cnblogs.com/yuzhaokai0523/p/4382974.html 1安装httpd-2.4.10.tar.gz wget http://w ...
- centOS7 通过nmtui和nmcli图形配置网络服务
一.通过nmtui配置网络参数 Linux系统配置网络参数的方式有很多种,其中最简单最直接的方式就是直接修改网卡配置文件,但这种方式也很容易出错,比如说IPADDR.NETMASK.GATEWAY等参 ...
- codeforces 57 C Array(简单排列组合)
C. Array time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...
- php内置函数分析之current()、next()、prev()、reset()、end()
current()初始指向插入到数组中的第一个单元 next() 将数组的内部指针向前移动一位 prev() 将数组的内部指针倒回一位 reset() 将数组的内部指针指向第一个单元 end() 将数 ...