最近想做一个Chrome的插件(看别的博客说其实叫插件不准确,应该叫拓展,大家叫习惯了就按习惯的来吧)。一开始咱先直接看了Chrome开发(360翻译)chrome extensions(这个官方的文档拓展的方法和属性有表格比较好找,但得会科学上网),之后卡住了开始上网搜发现【干货】Chrome插件(扩展)开发全攻略这篇博客写的已经很全了,而且附带的GitHub上的demo也特别全。咱这里就稍微把咱做的插件遇到的问题写一写(几乎都是看文档和那个博客解决的)。

谷歌页面翻译增强插件

一:如何点击Popup中的按钮,操作当前打开的网页的DOM

坑:

  1. 给Popup.html中的button添加内联的click事件(会报安全策略不允许的错误)
    解决:让Popup.html引入Popup.js文件,js文件通过id找到button添加click事件
  2. 在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内容进行还原。

  1. 保存网页中的pre标签中的内容
    在Popup.js里使用chrome.tabs.sendMessage发送给content-script消息执行获取全部pre标签中的html返回给Popup.js,Popup.js使用localStorage进行保存。

  2. 翻译此网页
    在Popup.js里获取当前页面url,并进行谷歌翻译

  3. 将保存的pre内容进行还原
    在content-script中根据url判断是否是翻译过的页面,是的话给Popup发消息得到pre标签中的html,将当前页面的pre标签中的html替换为刚刚得到的。

注:咱原本想用长连接的,但翻译网页时网页变了,长连接就断了,所以只能互相发消息

三:如何得知页面是否处理过或是否可编辑了

因为是每个页面的状态所以,在翻译的页面使用DOM节点保存一下

Chrome谷歌页面翻译增强插件开发的更多相关文章

  1. Chrome-谷歌页面翻译增强插件开发

    最近想做一个 Chrome 的插件(看别的博客说其实叫插件不准确,应该叫拓展,大家叫习惯了就按习惯的来吧).一开始咱先直接看了[Chrome 开发(360 翻译)](http://open.chrom ...

  2. windows如果在IE中用超链接打开谷歌页面

    Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\openChrome] @="URL:openChrome Protocol& ...

  3. 使用chrome查看页面元素的css样式

    使用chrome查看页面元素的css样式 我们在写页面的时候,可能总是不知道怎么回事,就发现某个元素出现了问题,但是不知道为什么会这样,这时候,就需要使用强大的chrome了!!! 举例说明: 1. ...

  4. 使用 Headless Chrome 进行页面渲染 - 知乎专栏

    使用 Headless Chrome 进行页面渲染 - 知乎专栏 使用 Headless Chrome 进行页面渲染 - 知乎专栏 这里我们使用 chrome-remote-interface 来远程 ...

  5. Chrome/谷歌开发者工具分析

    Chrome/谷歌开发者工具还是要好好掌握一下,对于前端开发超级有用:https://developers.google.com/web/tools/chrome-devtools/ 1.js内存使用 ...

  6. chrome浏览页面常用快捷键

    1.chrome浏览页面常用快捷键 Ctrl+N 打开新窗口. Ctrl+T 打开新标签页. Ctrl+W关闭当前标签 Ctrl + F4 关闭chrome浏览器 Ctrl+Tab 或 Ctrl+Pg ...

  7. Chrome划词翻译-Saladict

    Saladict 沙拉查词是一款专业划词翻译扩展,为交叉阅读而生.大量权威词典涵盖中英日韩法德西语,支持复杂的 划词操作.网页翻译.生词本.PDF,以及 Vimium 全键盘操作 . 迄今为止最好用的 ...

  8. 使用Chrome测试页面响应性

    如今我们都知道 响应式 的意思.作为开发者,我们常常开发一些响应式的应用.有很多工具可以帮助我们完成这个目的.某些人甚至使用付费扩展.然而,我用了一个东西,它就是 Google Chrome 浏览器. ...

  9. Chrome 谷歌开发者工具使用窍门

    我们这里介绍主要的几块:Console.Source.Network Console 大家都有用过各种类型的浏览器,每种浏览器都有自己的特色,本人拙见,在我用过的浏览器当中,我是最喜欢Chrome的, ...

随机推荐

  1. 解决Java线程池任务执行完毕后线程回收问题

      转载请注明出处:http://www.cnblogs.com/pengineer/p/5011965.html         对于经常使用第三方框架进行web开发的程序员来说,Java线程池理所 ...

  2. 虚拟机的linux(CentOS)系统安装

    一.安装虚拟机:VirtualBox  1.软件下载:https://www.virtualbox.org/  2.一路点击下一步完成安装 二.安装linux:CentOS6.8  1.官方网站:ht ...

  3. CSS样式 换行

    强制不换行 div{ white-space:nowrap; } 自动换行 div{ word-wrap: break-word; word-break: normal; } 强制英文单词断行 div ...

  4. 原生js实现深度克隆

    总体思路: 判断对象当中的值为引用值还是原始值 如果是引用值,判断是数组还是对象,如果是原始值直接copy 递归 注意:不要忘了排除null,因为typeof null = 'object' func ...

  5. rest_framework框架的分页

    class MyPageNumberPagination(PageNumberPagination): page_size = 1 page_query_param = 'page' page_siz ...

  6. PAT Advanced 1077 Kuchiguse (20 分)

    The Japanese language is notorious for its sentence ending particles. Personal preference of such pa ...

  7. 07java进阶——集合框架3(Map)

    1.映射表(Map) 1.1基本概念 1.2Map中常用的方法 package cn.jxufe.java.chapter7; import java.util.HashMap; import jav ...

  8. 计蒜客 蓝桥模拟 G. 数列求值

    递归式移项得Ai+1 = 2Ai + 2Ci - Ai-1; 1.A2 = 2A1 + 2C1 - A0; 2.A3 = 2A2 + 2C2 - A1; . . . n.An+1 = 2An + 2C ...

  9. ssh跳板到其他服务器

    https://my.oschina.net/foreverich/blog/657075 http://mingxinglai.com/cn/2015/07/ssh-proxycommand/ 查看 ...

  10. 绑定class -vue

    1.值为对象 :class = "{ 'text-red': isActive }" data () { return { isActive : true } } :class = ...