主页

抛弃contenteditable,实现富文本编辑器

有时候使用contenteditable=true来实现编辑器并不能满足需求 移动端使用contenteditable=true的一些不成问题的问题使用contenteditable=true实现编辑器,经过不断的优化,是可以解决很多问题的。下面一一列出一些问题及其解决方法。 问题一:插入超链接和图片如果不是复制粘贴的方式插入,而是采用点击工具栏,编辑超链接或者是调用相册的方式插入,则中间会出

ace富文本编辑器源码解析

ace富文本编辑器,是一款不错的JavaScript实现的富文本编辑器。它没有采用html的contentEditable实现,而是采用一种自行渲染、类似虚拟DOM的方式实现。我们对阅读了其源码,以期了解其实现原理。 大段源码警告 入口使用ace,初始化代码为 12345<div id="editor">some text</div> <script s

从零开始,再造一个小程序平台

微信发布小程序平台后,国内各大APP火速跟进,纷纷发布了自己的小程序平台。 速度真的很快,难道被微信形容“拥有出色体验”的小程序平台很容易实现?我们可以再造一个吗? 起初,作者甚至不知道小程序是由Native实现,还是网页实现。既然要再造一个,那么首先要做的就是来了解小程序平台实现原理。 调研搜索没有参与过小程序平台的建设,所以只能发动搜索技能。所以这篇文章也更多的是管中窥豹,抛砖引玉。 搜索

J2V8实现Java与Javascript互相调用

Java调用JS方法编写一个返回String的JS方法1234// jsfunction javaCallJSFunc (msg) { return msg + ' -> Hi, Java!'} 引入J2V8库时可以引入jar或者Android的aar包,或者自行编译。例如Android Studio引入:implementation 'com.eclipses

mac下载编译chromium源码

此文章来自网络。由于按照官方的教程没有成功编译iOS版,而按此文章成功编译,特此记录,原文链接 安装depot_tools工具获取depot_tools工具1git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git 添加环境变量把depot_tools工具路径添加到系统的环境变量,~/.bashrc o

vue-loader如何配置cssModules

在使用vue cli 2系列进行模块编程时,为避免css冲突,我们常采用vue-loader的scoped和module方法来实现。 scopedscoped使用方法最为简单,只需要在.vue文件的<style>标签增加scoped属性即可。123456789<template> <div class="example">hi</div></

ES6:看不懂的let类型与闭包间的关系+Babel的bug

let是ES6变量类型,其只在代码块内有效。闭包是有函数以及创建该函数的词法环境组合而成,这个环境包含了这个闭包创建时所能访问的所有局部变量。 如果合理使用闭包,可以使用var实现let局部有效的效果。显然这是多余的,因为babel已经能帮我们做了,并且很多新版浏览器都支持let,所有本文结束。 等等,babel都干了啥?为啥能将let转码使代码兼容旧版浏览器? 兼容转码我们先来看一段比较简单

深入解析vue-cli 2.9.*实现原理

vue-cli 3.0已出,你为什么还要看这个? Vue-cli项目结构 其中,我们主要关注点在package.json\bin\lib这3个地方。 package.jsonpackage.json中主要关注bin:12345"bin": { "vue": "bin/vue", "vue-init": "bin/vue-init", "vue-list": "bin/vu