相信很多人都在使用 Chrome 浏览器,其流畅的浏览体验得到了不少用户的偏爱,但流畅只是一方面, Chrome 最大的优势还是其支持众多强大好用的扩展程序(Extensions)。
最近为了更好的利用谷歌浏览器,博主整理了一些常用的谷歌插件,分享给大家,考虑到一些无法翻墙的童鞋,给力的博主当然是顺便给出离线安装文件。
闲话不多说,直接上推荐的插件,可以翻墙的直接点击标题跳转谷歌商店下载,不信的我下面也给出离线安装文件。
通用类插件
1、OneTab:将无数 Tab 合并在一个页面
很多时候我们在一个窗口打开太多的tab,每一个tab太小不容易管理,这时候使用OneTab能够把所有tab收起放在一个页面,点击就可打开该tab,非常方便。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237428194
2、Momentum:美到爆表的新标签页
受够了新建页面时候的空白页的话可以试试,Momentum每天都会提供一张高清大图,都很好看。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237426016
3、markdown here
超好用的一款插件,强烈推荐!!有个它再也不用担心编辑器不支持markdown语法了,写好以后直接一键转换。而且也是一个跨平台神器,比如我们可以把简书写好的文章(带md语法)直接复制到微信公众号,然后一键转换,格式几乎无变化!
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237430000
4、Adblock Plus:免除广告困扰
只要是使用 Chrome 的人都应该安装的一款扩展应用,可以帮助你屏蔽几乎大部分网页广告,如果存在漏网之鱼,还可以手动添加到屏蔽列。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237412331
5、LastPass:密码管理软件
LastPass,全球知名在线密码管理工具之一,采用军事级加密算法,支持自动填充网站用户名和密码,与朋友分享登录信息等实用功能,且在全平台同步免费,无需订阅 Premium,即可在手机、网页、电脑端同步你的所有 LastPass 信息。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237429060
6、关灯看视频
有时候网速太差,全屏以后分辨率很低,可以试试这个,可以让周围页面变暗从而达到最好的视觉效果。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237427954
7、二维码(QR码)生成器
在线的二维码生成器。可以把当前的网页直接生成二维码,进行编辑。还可以把文字生成二维码,这个很重要!
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237430273
8、下载+
Chrome的下载管理在二级菜单里,进去很不方便。装了这个插件就可以直接看和管理,很好用。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237427303
9、一键管理所有扩展
Chrome其实很占内存,尤其当插件装多了以后会卡顿。不过有个这个就不用担心,用不到的时候把插件关掉就行了,随时开随时关。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237427408
10、购物党
在线的比价工具,网购的时候可以看价格历史记录,以及各大网站的价格对比,也有查快递的快捷方式。经常剁手的童鞋要注意了~~
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237427693
11、右键搜
Chrome默认的搜索是谷歌搜索,没有翻墙的童鞋可能用起来不方便,但有这个这个就不用担心了。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237427843
12、印象笔记剪藏
大象官方的一个插件,可以直接把当前网页直接保存的evernote,非常方便。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237429322
13、AlloyDesigner
AlloyDesigner是来自Tencent AlloyTeam的前端开发工具,其只出现开发阶段的一定时期,可以在制作时期,也可以在开发测试期,旨在提高前端开发的效率,获得更加便捷的开发体验。AlloyDesigner的主要功能是加载Web页面的视觉稿,结合开发者工具(F12)进行页面的开发和调整。使用AlloyDesigner进行页面开发,基本上可以舍弃Photoshop进行页面的测量,以视觉稿做为背景蓝本进行开发,可以使开发体验更加便捷、高效,其结果页面也更高。AlloyDesigner也可以做为页面开发完成后,对页面进行细微调整,达到更加贴近视觉稿的目的。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237430320
14、新浪微博图床
简单好用的新浪微博图床,支持选择/拖拽/粘贴上传图片,并生成图片地址,HTML,UBB和Markdown等格式,支持浏览和删除历史记录。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237430064
15、Cloudbleed Bookmark Checker:检测书签是否有死链
对于书签收藏的狂魔同志,收藏夹里的网页肯定有很多都无法访问了吧!这款扩展就是来检测书签是否有死链的。因为不怎么常用,所以才三颗星。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237429807
16、Infinity:功能强大的新建标签页扩展
功能强大的新建标签页扩展!做的界面很美,每日壁纸质量也很高!有同步笔记、代办事项等,同时,喜欢它的网页图标,提供了很多常用网站的图标,自定义书签时很好看~唯一的缺点,就是感觉启动比较慢~
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237429572
17、crxMouse Chrome Gestures
对于国产浏览器自带鼠标手势的功能,真觉得很方便!这款扩展也是必装啊!
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237429513
18、Imagus
图片放大镜的功能!在体验了360浏览器、猎豹浏览器之后,特地去找的扩展!微博党的利器!这个不管能鼠标悬停放大图片,同时,对链接等也有预览。提供很多功能选项进行设置。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237429468
19、Save to Pocket
看到感兴趣的先收藏着,然后走哪儿都能看,因为它提供了全平台的APP,方便管理。Pocket也是手机端我必装的APP之一。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237429417
20、网页截图:注释&批注
在安装了一堆截图扩展之后,最后剩下了它,满足了截图所有的需求,截取可见网页,选择区域,整个网页,另外,还有对截图的标记
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237429237
21、眼不见心不烦(新浪微博)
Chrome就是满分评价,可见这扩展真是良心扩展啊!微博党的福音!在浏览器端,自己通过这个插件进行设置,可以将热门微博、会员推广等等内容窗口都给屏蔽了!还我们一个干净、舒服的微博环境!推荐!!!
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237428838
22、Image Downloader Chrome
下载页面图片的工具,很棒
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237421737
23、WhatRuns
WhatRuns是一款用于了解网站技术的chrome网站技术分析工具,主要能通过分析网站页面所使用的框架、代码等技术以及页面所使用的样式等方面,让使用者能直观的了解网站的整体技术信息。在安装了这款插件后,使用者可以通过点击WhatRuns图标来打开插件窗口,通过该窗口使用者可以轻松了解网站的技术信息
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237421488
24、Google翻译
Google翻译是一款由谷歌公司提供的网页划词翻译插件,是Google Chrome的翻译扩展工具,由Google官方发布。安装后,会在Chrome浏览器菜单栏中添加一个按钮,可以方便的在任何时候点击翻译你当前正在访问的页面。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237419781
25、FireShot 任意方式截取网页的截图插件
捕捉网页截图,编辑并将它们保存为PDF,JPEG,GIF,PNG或BMP;上传,打印,在Photoshop中打开,复制到剪贴板或电子邮件
离线版下载地址:
https://u14797164.pipipan.com/dir/14797164-26887957-b5742f/
26、Lucidchart Diagrams - Desktop:在线绘制多种图表
这个扩展程序是一款多功能绘制程序,支持绘制流程图,思维导图,版面设计等,并且有在线和离线两种模式,可谓功能强大。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-238588636
27、Trackr:追踪你的上网习惯
这个扩展程序做的事情就是记录你使用 Chrome 上网的习惯,包括上了哪些网站、每个网站呆多长时间,并且还用图表的形式反馈出来,总之装了这个扩展程序就不要上奇奇怪怪的网站了。
离线版下载地址:https://u14797164.pipipan.com/fs/14797164-238588363
28、Reader View:Chrome 也有 Safari 的阅读模式
将网页转换成 Safari 阅读模式的样式,让你更方便舒适的阅读网页文字,当你访问文章网页的时候,扩展程序的按钮会显示在地址栏末端,点击就能轻松享受更好的阅读模式。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-238588468
29、DrumUp:个性化的浏览推荐
当你打开一个网页的时候,为您推荐与现在浏览的网页内容相似或者相关的内容,对于英文的支持比较好,每天阅读很多的人能找到很多关联的感兴趣内容。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-238588751
30、Mainichi:学习日语,每页一词
学习日语的新方式,每当你打开一个新标签页对会显示一个日文单词,并且配有一张简洁的图片、假名及其读音,不知道有多少朋友在学习日语呢?
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-238589647
31、New Tab Startup Quotes:学习成功人士的格言
想学习成功人士的精神和智慧,这个扩展程序可以帮到你
,每当你打开一个标签页,它都会显示一位成功人士的格言,不得不说熬得一锅好鸡汤。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-238590300
32、Unsplash Instant
每次打开一个新标签页都会显示一张来自 Unsplash 的摄影作品,全高清的分辨率和专业的摄影元素,Unsplash 的作品都是满满的文艺范儿,非常适合文艺青年。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-238590385
33、Search by Image:强大的以图搜图
Chrome 又一神器,结合 Google 以图搜图,可以快速让你找到一张图片的来源、其他尺寸、或者寻找到相似的图片,毕竟在搜索方面,还是 Google 做的最好。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-238590409
33、Instapaper:稍后阅读神器
全球两大稍后阅读神器之一 (另外一款为 Pocket),自从被 Pinterest 收购后,Instapaper 所有高级订阅功能完全免费,令人称道!
当你对某个网页内容感兴趣,却没时间马上阅读,点击 Instapaper 图标或使用快捷键 (Cmd+Shift+S),一键保存至 Instapaper,方便你随时随地进行查看。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-238590481
34、为什么你们就是不能加个空格呢
每次看到文章中的英文、数字、中文写在一起,你知道我的内心是什么样吗?
你们能不能在它们之间加个空格呢?!不过自从装上了「为什么你们就是不能加个空格呢?」,插件会自动把网页中所有中文、英文、数字、符号之间插入一个空格,从此告别此痛苦,又能和大家好好玩耍啦。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-238590634
35、Clear Cache
点击图标即可清除缓存、cookie等,开发必备!
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237429862
开发类插件
36、JSON Viewer
JSONView 是一个方便查看 Json 结构的插件,展开,折叠,可以非常方便的查看接口返回数据。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-238591310
37、Postman
相信开发者朋友一定知道这款插件,这是一款强大的 API & HTTP 请求调试工具,它不仅可以调试简单的 HTML、CSS 以及脚本等简单的网页基本信息,这款 Chrome 插件甚至还能发送几乎所有的 HTTP 请求,可谓是 Web 开发者的一大利器。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237420917
38、Octotree
github上查看代码的时候总是一层层进入再出来,有点麻烦,没关系,有Octotree。安装Octotree之后,浏览托管在Github上的项目,可看到左侧的树形结构,更方便查看代码。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-238591356
39、Vimium
Vimium 这个名字其实是 Vim 和 Chromium 的合体。可能很多童鞋已经猜到她是干嘛的了,她继承了Vim的常用操作,完全脱离鼠标来控制浏览器,是一款黑客级别的Chrome插件。对熟悉linux的同学来说,简直是神器。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237429953
40、Tampermonkey
俗称‘油猴子’,是一款功能非常强大的插件,他包含:方便的脚本管理、脚本概览、设置多样性、脚本自动更新、安全、兼容性、Chrome 同步、CodeMirror 编辑器、JSHint 语法检查、快速开发、卸载等功能。 其官方描述只一句 The world’s most popular userscript manager。足见其优秀。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-238591505
41、Code Cola
Code Cola是一个可视化编辑在线页面css样式的chrome插件。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237430108
42、WEB前端助手
FE助手:包括字符串编解码、图片base64编码、代码压缩、美化、JSON格式化、正则表达式、时间转换工具、二维码生成器、编码规范检测、页面性能检测、栅格检测、JS运行效率分析等。
离线版下载地址:
https://u14797164.pipipan.com/fs/14797164-237430197
来源:http://tengj.top/2018/02/17/ggcj/
近在网上流行的chatgpt,实在是太火了,好多人在使用,而且它的用处实在是太丰富了,能帮助我们解决很多问题,就比如说:编程,生成图片,翻译等。太丰富了。我看网上很多人都在说,它可以帮助人开发软件,在没有相关编程语音的基础上都能把软件做出来,于是我也思考了一个场景,想让他帮我实现一下浏览器插件的划词翻译。结果真的实现了,而且在浏览器上也跑起来了,真的是太兴奋了。我在想是不是以后都不需要程序员了,这个职业会不会马上就被替代掉,以下是我跟chatgpt的交流内容:
然后它告诉我,我如果想写一个插件到底需要准备哪些文件, manifest.json 文件中添加
{
"manifest_version": 2,
"name": "My Extension",
"version": "1.0",
"permissions": [
"activeTab",
"contextMenus"
],
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": [
"content_script.js"
]
}
]
}
在 content_script.js文件中监听mousedown事件,以便在用户选定段落文字时触发。
document.addEventListener('mousedown', function(event) {
var selectionText = window.getSelection().toString();
if (selectionText) {
// 在此处添加代码以显示您的 DIV。
}
});
创建一个div元素并将其添加到文档中。您可以使用以下代码:
document.addEventListener('mousedown', function(event) {
var selectionText = window.getSelection().toString();
if (selectionText) {
var div = document.createElement('div');
div.innerHTML = '您要显示的文本。';
div.style.position = 'absolute';
div.style.top = event.pageY + 'px';
div.style.left = event.pageX + 'px';
document.body.appendChild(div);
}
});
在此示例中,我们在 mousedown 事件处理程序中创建了一个 div 元素,并将其添加到文档中。请注意,我们使用 event.pageX 和 event.pageY 属性来设置 div 元素的位置,以便该元素出现在用户点击的位置下方。 4. 样式 DIV。您可以使用 CSS 样式为 div 元素设置透明度、边框样式、字体大小等。
document.addEventListener('mousedown', function(event) {
var selectionText = window.getSelection().toString();
if (selectionText) {
var div = document.createElement('div');
div.innerHTML = '您要显示的文本。';
div.style.position = 'absolute';
div.style.top = event.pageY + 'px';
div.style.left = event.pageX + 'px';
div.style.backgroundColor = 'white';
div.style.border = '1px solid black';
div.style.padding = '5px';
div.style.fontSize = '14px';
div.style.fontFamily = 'Arial';
document.body.appendChild(div);
}
});
根据您的需求和设计,您可以通过调整 CSS 样式来自定义 div 元素的外观。 希望这些步骤对您有所帮助!
然后我复制完代码就放到我的插件包里面,使用浏览器加载一下插件,就出现了提示信息,果真可以直接使用,但是提示框我划词一下, 就出现一个,太多提示框,于是我问出了下面的问题
是的,您可以在创建新的提示框之前,清除先前的提示框。为此,您可以使用 document.querySelectorAll() 方法获取先前创建的所有提示框,并使用 Array.from() 方法将其转换为数组,然后使用 forEach() 方法循环遍历这些提示框,并使用 remove() 方法从文档中删除它们。 以下是更新后的代码,它添加了一些功能以清除先前创建的提示框:
document.addEventListener('mousedown', function(event) {
var selectionText = window.getSelection().toString();
if (selectionText) {
// 查找并删除先前创建的所有提示框
var oldDivList = Array.from(document.querySelectorAll('.my-extension-div'));
oldDivList.forEach(function(divElement) {
divElement.remove();
});
// 创建一个新的提示框
var div = document.createElement('div');
div.className = 'my-extension-div';
div.innerHTML = '您要显示的文本。';
div.style.position = 'absolute';
div.style.top = event.pageY + 'px';
div.style.left = event.pageX + 'px';
div.style.backgroundColor = 'white';
div.style.border = '1px solid black';
div.style.padding = '5px';
div.style.fontSize = '14px';
div.style.fontFamily = 'Arial';
document.body.appendChild(div);
}
});
在这个更新的代码中,我们首先使用 document.querySelectorAll() 方法获取所有具有 "my-extension-div" 类名的 div 元素,并将其转换为数组。然后,使用 forEach() 方法遍历该数组,并使用 remove() 方法从文档中删除该元素。 最后,我们创建了一个新的提示框,并为该元素设置了 "my-extension-div" 类名。这将使我们能够随时找到并删除该元素。 希望这个更新的代码可以帮助您解决问题!
我大概知道它的意思了,它的意思是我需要设置一下className,然后根据className找到所有的提示框,在鼠标事件触发的时候把其余的提示框删除掉,但是里面还有很多我不知道的函数,我不知道怎么拿到当前的选中的文本信息,但是我看到代码里面有一段代码,我继续问道。
要获取当前选中文本的 HTML 信息,您可以使用 Range 对象。 Range 对象表示文档中的一段区域,可以包含一个或多个节点,并允许您对这些节点进行选择和编辑。 在 Edge 扩展中,您可以通过 window.getSelection() 方法获取当前选中的文本所在的节点,然后使用 getRangeAt() 方法获取包含文本的 Range 对象。最后,您可以使用 cloneContents() 方法将 Range 中包含的节点的副本作为 DocumentFragment 对象返回,并将其插入到新创建的 div 元素中,以显示为 HTML。 以下是一个示例代码,用于获取当前选中文本的 HTML 信息:
document.addEventListener('mousedown', function(event) {
var selectionText = window.getSelection().toString();
if (selectionText) {
var range = window.getSelection().getRangeAt(0);
var div = document.createElement('div');
var fragment = range.cloneContents();
div.appendChild(fragment);
document.body.appendChild(div);
}
});
在这个代码中,我们首先获取当前选中的文本,并检查是否有选中的文本。然后,我们使用 getRangeAt() 方法获取 Range 对象,并使用 cloneContents() 方法从 Range 对象中提取文本节点。接下来,我们将提取的文本节点副本插入到一个新创建的 div 元素中,并将该元素添加到文档中,以显示为 HTML。 希望这可以帮助您获取并显示当前选中文本的 HTML 信息。
好了我大概知道怎么操作了,那之后我肯定就得接入翻译api了,那我怎么接入翻译api呢,于是我找了百度的翻译接口,直接把示例扔给了chatgpt
接入举例
例如:将英文单词 apple 翻译成中文:
请求参数:
q=apple
from=en
to=zh
appid=2015063000000001(请替换为您的appid)
salt=1435660288(随机码)
平台分配的密钥: 12345678
生成签名sign:
Step1. 拼接字符串1:
拼接appid=2015063000000001+q=apple+salt=1435660288+密钥=12345678得到字符串1:“2015063000000001apple143566028812345678”
Step2. 计算签名:(对字符串1做MD5加密)
sign=MD5(2015063000000001apple143566028812345678),得到sign=f89f9594663708c1605f3d736d01d2d4
拼接完整请求:
http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4
注:也可使用 POST 方式,如 POST 方式传送,Content-Type 请指定为:application/x-www-form-urlencoded
麻烦生成一下edge扩展的代码示例
好的,以下是一个将选中的单词使用百度翻译 API 将其从英文翻译为中文的 Edge 扩展示例代码:
// 获取当前选中的文本
function getSelectedText() {
let selection = window.getSelection();
if (selection && selection.rangeCount && selection.toString()) {
return selection.toString();
}
return null;
}
// 发送翻译请求
function translate(word) {
const appid = 'YOUR_APP_ID'; // 替换成自己的 APP ID
const key = 'YOUR_KEY'; // 替换成自己的密钥
const salt = Date.now().toString();
const sign = md5(appid + word + salt + key); // 使用 md5 加密生成签名
const url = `http://api.fanyi.baidu.com/api/trans/vip/translate?q=${encodeURIComponent(word)}&from=en&to=zh&appid=${appid}&salt=${salt}&sign=${sign}`;
return fetch(url).then(response => response.json());
}
// 在页面上添加提示框
function addTooltip(text, target) {
const tooltip = document.createElement('div');
tooltip.innerHTML = text;
tooltip.style.cssText = `
position: absolute;
top: 0;
left: 0;
z-index: 99999;
padding: 0.5rem;
font-size: 1rem;
background-color: #fff;
border: 1px solid #aaa;
box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.2);
`;
document.body.append(tooltip);
// 计算提示框位置
const rect = target.getBoundingClientRect();
tooltip.style.top = `${window.pageYOffset + rect.top + rect.height}px`;
tooltip.style.left = `${window.pageXOffset + rect.left + rect.width}px`;
// 添加点击事件,点击以后自动关闭提示框
tooltip.addEventListener('click', () => tooltip.remove());
}
// 添加鼠标选中事件监听器
document.addEventListener('mousedown', async (event) => {
// 如果选中文本为空,则不继续执行
const selectedText = getSelectedText();
if (!selectedText) {
return;
}
// 如果选中文本包含空格,则不继续执行
if (selectedText.includes(' ')) {
return;
}
// 发送翻译请求
const translation = await translate(selectedText);
const translationText = translation.trans_result[0].dst; // 获取翻译结果
addTooltip(translationText, event.target); // 在页面上添加提示框
});
注意,在使用百度翻译 API 提交请求之前,需要将 YOUR_APP_ID 和 YOUR_KEY 替换为您自己的百度翻译 API 的 APP ID 和密钥,否则将会返回错误的结果。另外,Edge 扩展使用的是 Content Scripts,所以要注意在 manifest.json 文件中配置好权限和注入的页面。
哇,它直接给我生成了全套的代码,真是太丰富了,我直接拿代码,覆盖了我之前写的代码,改了一下appid和key,在浏览器上实现一下,发现有错误,于是我直接把错误信息给了chatgpt
selectedText.includes() 是 JavaScript 字符串原型对象上的方法,用于判断字符串中是否包含某个子字符串。如果包含,则返回 true,否则返回 false。 在这个例子中,因为我们只想翻译单个英文单词,而不是短语或句子,所以我们需要判断选中的文本是否包含空格或其他分隔符。如果包含分隔符,则意味着选中的是一个短语或句子,而不是单个单词,此时我们不会发送翻译请求。 具体来说,selectedText.includes(' ') 的作用就是判断选中文本中是否包含空格,如果包含,则返回 true,否则返回 false。如果返回 true,则说明选中的文本是一个短语或句子,不是单个单词,不会发送翻译请求。
是的,如果字符串中有空格或其他分隔符,includes() 方法也会返回 true,因为字符串中确实含有空格。因此,如果想要判断选中的文本是否为单个单词,我们需要使用更加严谨的方式来判断。 一个常用的方法是使用正则表达式,例如下面的代码:
function isWord(text) {
return /^[a-zA-Z]+$/.test(text);
}
这个函数会检查字符串 text 是否由一个或多个大小写字母组成。如果是,就说明它是一个单词,否则就不是。使用这个函数,我们就可以在代码中更加准确地判断选中的文本是否为单词:
// 添加鼠标选中事件监听器
document.addEventListener('mousedown', async (event) => {
// 如果选中文本为空或包含空格,则不继续执行
const selectedText = getSelectedText();
if (!selectedText || !isWord(selectedText)) {
return;
}
// 发送翻译请求
const translation = await translate(selectedText);
const translationText = translation.trans_result[0].dst; // 获取翻译结果
addTooltip(translationText, event.target); // 在页面上添加提示框
});
这样,当用户选中的文本不是单词时,就不会发送翻译请求。
error: md5 is not defined 这个错误通常是由于在你的 translate 函数中没有正确引入 md5 模块导致的,因为 md5 是一个方法,不是内置函数,需要先导入才能使用。 在使用 md5 之前,需要先在代码的开头导入 md5 模块。例如,在使用 md5 之前先导入(或加载)这个模块: import md5 from 'md5';
如果你使用的是 CommonJS 模块规范,也可以使用 require 方法来导入模块,例如: const md5 = require('md5');
想了解更多有关模块化编程的信息,可以查看 MDN 文档。 导入 md5 模块后,在你的 translate 函数中就可以使用 md5 方法了。例如:
import md55 from 'md5';
async function
在 Edge 扩展中,由于浏览器的安全策略的限制,我们不能直接使用 import 的方式引入 md5 模块。但是,在扩展中我们可以通过添加脚本文件的方式来引入第三方库。 具体来说,可以按照以下步骤来引入 md5 模块:
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": [
"content_script.js",
"lib/md5.js"
]
}
],
在需要使用 md5 模块的地方,可以使用全局变量 md5,这个变量引用的是 md5.js 中导出的模块。
// 在translate函数中使用md5模块
async function translate() {
// 其它代码...
const text = 'hello world';
const md5Text = md5(text); // 使用全局变量md5
// 其它代码...
}
这样就完成了在 Edge 扩展中引入 md5 模块的过程。
这个错误通常是由于 Fetch API 抛出了异常或者请求被停止或由浏览器禁止导致的。这种错误可能是由下列原因导致的:
综上所述,解决 Uncaught (in promise) TypeError: Failed to fetch 的错误需要根据具体情况进行排查。可以通过查看请求状态码、Network 面板以及浏览器控制台来获取更多提示信息,并根据具体情况进行相应的修复。
这个错误信息表明请求的资源存在跨域问题并且服务器未设置跨域访问控制。跨域资源共享(CORS)是一种浏览器技术,用于解决跨域资源请求的安全性问题。CORS 要求服务器在响应头设置 Access-Control-Allow-Origin 来指定能够访问该资源的域名。如果服务器未设置该响应头,则浏览器将拒绝该请求。 要解决这个问题,可以尝试以下几种方案:
总之,解决跨域问题需要根据具体情况进行排查并采取相应措施。可以通过检查响应头、浏览器控制台以及 Network 面板获取更多提示信息。 在edge plugin 代码中应该怎么实现呢
manifest.json
在配置文件manifest.json中开启这个权限,代码大致如下:
{
"name": "demo",
"version": "0.1.0",
"manifest_version": 3,
"icons": {
"16": "icon/icon16.png",
"48": "icon/icon48.png",
"128": "icon/icon128.png"
},·····
核心的代码其实就这一行
chrome.runtime.sendMessage(message, resolve);
借助的API也是chrome浏览器内置的API,当通过 chrome.runtime.sendMessage 将消息发送出去后,在background.js中会通过 chrome.runtime.onMessage.addListener 接收到,一旦接收到消息,那么会立刻触发跨域的接口,向后台发送请求,接口返回之后又通过 sendResponse(res) 发送到页面, 此时的页面自然也就可以获取到跨域接口的值;····
这是使用 Chrome 扩展工具实现跨域请求的方法。使用此方法需要先编写一个扩展工具,然后使用该工具在浏览器中调用跨域 API 接口。 在 manifest.json 配置文件中使用 host_permissions 权限以允许扩展访问跨域资源。
此外,使用 chrome.runtime.onMessage.addListener() 监听浏览器发送的消息委托,当扩展工具接收到消息时,它可以发出跨域请求,然后将响应发送回消息委托方。 在 background.js 中使用 fetch() 来获取跨域资源的数据,并使用 sendResponse() 向消息委托的页面返回响应数据。 在消息委托的页面中,通过使用 chrome.runtime.sendMessage() 将消息委托给扩展工具。一旦收到消息,扩展工具就会发出跨域请求,并将响应返回给消息委托方。 需要注意的是,使用Chrome扩展工具实现跨域访问时,用户必须安装该扩展工具才能正常使用该功能,因为该功能只适用于扩展工具本身运行的浏览器。
这里提供一个完整的示例代码,展示如何使用 Chrome 扩展工具实现跨域请求。 首先,在 manifest.json 文件中添加以下配置:
{
"name": "Cross Domain Extension",
"version": "1.0",
"manifest_version": 3,
"description": "A Chrome extension to test cross domain requests",
"icons": {
"16": "icon.png",
"32": "icon.png",
"48": "icon.png",
"128": "icon.png"
},
"background": {
"service_worker": "background.js",
"type": "module"
},
"permissions": ["activeTab"],
"host_permissions": ["<all_urls>"],
"content_scripts": [
{
"matches": ["<all_urls>"],
"match_about_blank": true,
"js": ["content.js"]
}
]
}
上面的配置文件将 host_permissions 设置为 <all_urls>,这样扩展工具就可以访问所有网站了。注意,这个选项应该小心使用,因为它会导致一些安全风险。 接下来,编写 background.js,实现消息委托的逻辑:
// 在后台中接收消息
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.type === 'get') {
fetch(message.url)
.then(response => response.json())
.then(data => sendResponse({ success: true, data }))
.catch(error => sendResponse({ success: false, error }));
}
return true;
});
在这个示例中,我们添加了一个监听器来接收由 content.js 发送至扩展工具的消息,如果消息的类型是 get,则我们使用 fetch() 向指定 URL 发送 GET 请求,并将响应发送回 content.js。 最后,编写内容脚本 content.js,将需要发送到扩展工具的消息委托至 background.js:
// 获取当前选项卡信息和当前页面 URL
chrome.tabs.query({ active: true, currentWindow: true }, tabs => {
const [currentTab] = tabs;
const url = new URL(currentTab.url);
// 向扩展工具发送消息
chrome.runtime.sendMessage(
{
type: 'get',
url: `https://api.github.com/search/repositories?q=${url.host}`
},
response => {
console.log(response);
}
);
});
在这个示例中,我们使用 chrome.tabs.query() API 获取当前选项卡的信息,并从中获取当前页面的 URL。我们将 URL 拼接到一个 Github API 查询中,然后将查询URL 和消息类型一起发送至扩展工具。 扩展工具接收到消息后,获取请求的 URL 并向该 URL 发送 GET 请求,并将响应发送回内容脚本。内容脚本接收响应并将其输出到控制台。 在上面的示例中,我们使用了 fetch() 发送请求,因此需要在 manifest.json 文件中将 "type": "module" 添加至 "background" 区块。 完成上述步骤后,在 Chrome 浏览器中打开一个网站并点击扩展工具的图标,然后查看控制台中的输出。如一切正常,你应该可以看到一个响应结果对象。
很快他给我了示例程序,于是我照着示例程序融汇到我的翻译插件里面,测试了一下,如下图:
划词翻译成功,可以进行划词翻译了, 但是代码上还有很多问题需要补充
算每天都和英文文献打交道,是不是还是发现文献中总是有那么一些看不懂的英文单词冒出来,如果是PDF中的生词和句子,复制到翻译软件中去翻译总是有些麻烦,划词取词也不是那么贴合心意。那今天就为大家推荐几款好用的文献翻译软件,主要针对快速翻译全篇文献或者PDF文件等常见问题。
一、Google Chrome浏览器的网页翻译
最先推荐的绝对是笔者认为最简单好用的谷歌浏览器的网页翻译。当然,QQ浏览器和360浏览器也都是可以的,安装翻译的插件即可。如果是在校园网的情况下,强烈推荐直接在线链接到数据库用网页阅读文献。网页版的文献读起来非常方便,有很多优点:字体大小适中,图片清晰,并且在旁边有推荐阅读的相关文献,可以直接访问阅读。点击谷歌浏览器自带的翻译功能,就可以对全文进行翻译。
图1文献原文(来源:ScienceDirect)
翻译后效果还是很不错的。速度快,并且方便快捷,随时想阅读原文便可以点击右上角“显示原始网页”切换。
图2网页版文献翻译后(来源:ScienceDirect)
当然这种方法简便快捷,但是并不是适合所有人,最重要的一点还是要在校园网的环境下进行。那对于PDF文件可以选择这个方法吗?答案是可以的!不过需要下载一个PDF转html的工具。在这里为大家推荐一款在线PDF转换工具,可以直接打开使用:
图3转换文件格式(来源:Online Programs - Convert PDF toHTML online)
大概几秒钟就会出现转换结果,直接点击即可链接过去,再用网页自带的翻译功能进行翻译,怎么样,是不是很方便。
图4转换文件格式结果(来源:Online Programs - Convert PDF toHTML online)
因为PDF本身一些换行的原因,翻译效果不如网页版的效果好。但是也可以为大家在需要时提供很大的便利了。
图5谷歌网页翻译PDF转换文件结果
二、知云PDF翻译阅读软件
除了浏览器的翻译功能,还为大家推荐这一款最近很热门的专为生物医学生打造的免费PDF翻译软件——知云文献翻译。官方承诺除非倒闭,这款软件将永久免费。并且没有任何广告。可以当作PDF阅读器使用,体积小(只有13M),打开迅速,可以做批注、拆分页面、标记等。可以直接划词划句子翻译,直接在右侧翻译栏显示,方便快捷。翻译的质量很高,有多个翻译引擎,引擎3是特别为生物医学科研设计的,接近真人翻译。
1.下载和安装:打开网址http://i.zhiyunwenxian.cn/?p=195即可下载最新版本知云。桌面版适合操作系统Win7-Win10。
2.下载安装后注册登录,然后打开知云,点击“文件”打开一篇英文文献,用鼠标划取一段文字,无需点击任何按键,在右边就会自动出现翻译。显示方式是翻译与原文的对照,十分方便,不用复制到别的搜索软件中。划取单词,会给出解释和音标及读音。
图6(来源:知云PDF翻译软件)
2.知云集合了四大翻译引擎,有百度AI翻译,谷歌智能云翻译,谷歌生物医学专用翻译,有道翻译。刚下载下来时,可以使用百度AI翻译,其他翻译引擎的解锁需要分享拿积分(操作也很简单)。其中引擎3谷歌生物医学专用翻译是自建服务器,对学术专业术语作了特别的优化,是阅读文献首选翻译引擎,翻译最接近真人翻译。除了适用于生物医学,也适用于理工类。有了它再也不用面对专业词语的翻译哭笑不得了,真的是生物医学专业的福音!
图7(来源:知云PDF翻译软件)
3. 版面大小调整,可以通过拖动左右分界改变右侧翻译框的宽度,让右侧变宽或变窄。将鼠标定位在右边的翻译框,Ctrl+加号,放大翻译框字体,Ctrl+减号,缩小翻译框字体。用缩放工具可以放大自己选中的区域。
图8(来源:知云PDF翻译软件)
4. 批注和标记,知云有丰富全面的批注工具可以选择,比如高光、附注、下划线、删除线、箭头、矩形、圆形等,还可以手写批注。十分方便。
图9(来源:知云PDF翻译软件)
5. 拆分阅读和提取重要页面,阅读文献时因为要经常一边看文字一边看图片或一边看参考文献,所以拆分页面也是必不可少的实用功能。知云支持水平拆分和垂直拆分。
图10(来源:知云PDF翻译软件)
也可插入页面(可以是空白也可以不是空白页面)和提取页面(提取几页都可以)。
图11(来源:知云PDF翻译软件)
6. 还有很多其他功能,工具菜单中有测量工具(面积和长度),方便测量图片等大小。在翻译栏的“其他功能”中还可以输入翻译模式(支持1万字符)。将知云设置为默认PDF阅读器后,可以直接使用Endnote打开。并且还贴心地带有夜读模式,突然让熬夜看文献的同学们感受到一丝温暖。
三、彩云小译
彩云小译是很多人强推的一款翻译软件,简洁,翻译效果好,有网页版和手机版本。今天为大家展示一下网页版的PDF翻译功能。点击https://fanyi.caiyunapp.com进入主页,上传文档前需注册登录(很方便)。
图12彩云小译网页版(来源:彩云小译)
翻译速度较快,几秒后便翻译完全文,有双语对照和译文两种模式,可以免费在线浏览,也可以下载,每个用有五次免费下载的机会,也可以通过好友助力、付费、会员等方式进行多次下载。整体来说操作比较方便快捷。
图13彩云小译网页版(来源:彩云小译)
四、Copy Translator
CopyTranslator包含多个翻译工具(Google,百度,有道,彩云,搜狗),翻译质量很有保证。这款软件最大的两个特点:自动识别剪切板复制即翻译;自动解决换行问题。点击网址:
https://github.com/elliottzheng/CopyTranslator/blob/master/README_zh.md,就可以下载最新版本的CopyTranslator。
图14Copy Translator介绍(来源:Github)
在网页或者PDF文献中,将想要翻译的段落划取,复制,软件就会自动监听剪切板(也可以设置不监听),快速翻译,省去了复制来粘贴去的时间。并且软件自动换行,十分方便。软件占用的空间很小,一般运行起来常驻内存只有十几兆。操作页面十分简单,上手很迅速。还有点按翻译、智能互译、增量复制等多个功能。并且该软件一直在更新,还有许多功能正在开发中,值得期待,是一个难得的良心好软件。
图15Copy Translator使用界面(来源:Copy Translator)
最后让我们一起感受一下Copy Translator的翻译速度。
图16Copy Translator使用界面(来源:Copy Translator)
好啦,今天的干货就到这里啦,软件的功能越来越强大,但再好的翻译软件都不能成为大家英语学习偷懒的理由哦!最后祝愿大家,英语越来越好,文章质量越来越高!
来源于科研小助手
*请认真填写需求信息,我们会在24小时内与您取得联系。