博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
撸一个增强博客园markdown编辑器的chrome插件
阅读量:4520 次
发布时间:2019-06-08

本文共 2243 字,大约阅读时间需要 7 分钟。

目录

写在前面

1016471-20190307095235180-670044770.png

从开博到现在,在博客园混了快两年了,一直希望能为园友做点贡献。最近写博客的时候,作为markdown的忠实粉丝,感觉博客园textareamarkdown编辑器不是很好用,干脆撸了一个增强版的chrome编辑器,支持自动生成目录。效果见截图:

1016471-20180728123001658-684450444.png

除了保留了原有的好用的拖拽上传图片外,借助codemirror,提供了代码高亮,缩进,显示行号等常用的编辑器功能,还能自动生成目录。更源码放在github上了,欢迎体验,fork和star~,觉得不错麻烦点一下右下角的大拇哥?。

2018-11-28日更新:支持emoji插入

2018-12-6日更新:支持高亮设置中的自定义css,详情见github

2019-1-15更新,应大家要求,已发布到chrome应用商店

2019-1-26更新,支持基本的字体加颜色功能

2019-1-31更新,支持搜索、插入斗图表情包。

uploading-image-916183.png

点击搜索出的图片即可插入文章中,默认宽度30%,如下图:

9150e4e5gy1fvguvd23ogj206o06o0td.jpg

安装

折腾过chrome插件的同学应该对安装插件都不陌生,这里我就简单说明一下:

  1. 在浏览器中输入chrome://extensions
  2. 打开开发者模式
  3. clone仓库
  4. 点击加载已解压的扩展程序,选择clone下来的app文件夹
  5. 如果一切正常,打开时即可看到一个船新的markdown编辑器,没有成功的同学可以在下面留言

这里再介绍一下设置主题。chrome的各版本下插件选项的位置不一样,最新的chrome(我的是67.0.3396.99)需要在插件的左下角点开详细信息,然后才能看到设置选项,老一点的版本,在详细信息旁边有个选项按钮,下面是新版本chrome设置截图

屏幕快照 2018-07-26 下午10.41.44.png

如何写一个chrome插件

这是一个很大的题目,我就根据自己的经验,写简单点,带还不了解的同学入门,不对的地方还望大佬指正。根据官网文档的说法,一个chrome插件可能会包括以下列出的一个或者多个部分:

  • Manifest
  • Background Script
  • UI Elements
  • Content Script
  • Options Page

manifest.json是一个json文件,也是chrome插件的配置文件。定义了Chrome 插件的名称,版本号,所需权限(如储存,跨域)等信息。举个?

...  "content_scripts": //当页面地址符合matches时,注入下面js和css文件并在页面加载完成式执行    [      {          "matches": ["https://i.cnblogs.com/*"],          "js": ["scripts/jquery.js","scripts/codemirror.js","scripts/markdown.js","scripts/marked.js","scripts/cnblogs.js"],          "css": ["styles/3024-night.css","styles/codemirror.css"],          "run_at": "document_end"      }    ],  "options_ui": {//配置设置页面    "chrome_style": true,    "page": "options.html"  },  "permissions": [// 权限字段,储存,跨域,web请求,跨域都需要在这里配置    "storage",    "clipboardRead",    "clipboardWrite",    "activeTab",    "webRequest",    "*://*.cnblogs.com/"  ],...

Background script运行于后台,用于监听插件所需要的浏览器事件信息,并调用相应的逻辑。

UI elements包括一个弹窗(popup),一个新的标签页所要显示的html页面或者在右键快捷菜单中添加一栏。相应的配置字段如下:

..."default_popup": "popup.html","chrome_url_overrides" : {   "newtab": "override_page.html"},...

上面两个字段的值都是相对于json的相对路径。只要相对路径写对,就可以像写网页一样开发插件的UI界面了。打个比方,借助popup.html可以开发一个插件,用于获取github每天新出现的受欢迎的项目,:

1016471-20180728114304698-54129429.png

Content Script就是针对某一部分特定的网页添加相关功能,比如本文提到的这个插件。在manifast.json中配置content_scripts,即可在特定的时机向特定的网页注入你的插件代码和样式。

Options Page是插件为插件用户提供的设置页面,它也是一个普通的html页面,对应于manifast.json中的options_ui字段,来设置设置页面的相对路径。

总结

整体而言,写一个chrome插件还是比较容易的,借助chrome提供的api,可以作出让自已有成就感的插件。有梯子的同学可以到查看更详细的教程,或者看看园子里这篇

欢迎大家提issue和PR(完)

转载于:https://www.cnblogs.com/imgss/p/cnblogs-md-editor.html

你可能感兴趣的文章
实现带有getMin的栈
查看>>
这些年正Android - 母亲
查看>>
iOS 10中如何搭建一个语音转文字框架
查看>>
springmvc配置接口返回的数据是json
查看>>
【转】Android低功耗蓝牙应用开发获取的服务UUID
查看>>
【转】java提高篇(二三)-----HashMap
查看>>
第一个只出现一次的字符
查看>>
多个视图控制器的返回
查看>>
Codeforces Round #451 Div. 2 C D E
查看>>
快速构建编辑类型弹出窗口
查看>>
室外光缆结构
查看>>
【JZOJ3400】旅行
查看>>
第5.2次作业
查看>>
luoguP5108 仰望半月的夜空 [官方?]题解 后缀数组 / 后缀树 / 后缀自动机 + 线段树 / st表 + 二分...
查看>>
Mysql学习第一天
查看>>
031 oracle环境下的Start with...Connect By递归树查询
查看>>
深入浅出 Java Concurrency (17): 并发容器 part 2 ConcurrentMap (2)[转]
查看>>
【 HYSBZ - 2440 】完全平方数 (莫比乌斯函数容斥)
查看>>
最优矩阵链乘
查看>>
2012年软件大赛校内选拔赛
查看>>