原生态javascript编写富文本的一点参考文

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			html,body{
				width: 100%;
				height: 100%;
				padding: 0;
				margin: 0;
			}
			#app{
				display: flex;
				flex-direction: column;
				justify-content: flex-start;
				width: calc(100%-100px);
				height: calc(100%-100px);
				padding: 50px;
			}
			.operator-menu{
				display: flex;
				justify-content: flex-start;
				align-items: center;
				width: 100%;
				min-height: 50px;
				background-color: beige;
				padding: 0 10px;
			}
			.edit-area{
				width: 100%;
				min-height: 600px;
				background-color: blanchedalmond;
				padding: 10px;
			}
			.operator-menu-item{
				padding: 5px 10px;
				background-color: cadetblue;
				border-radius:10px;
				cursor: pointer;
				margin: 0 5px;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<div class="operator-menu">
				<div class="operator-menu-item" data-fun='fontBold'>加粗</div>
				<div class="operator-menu-item" data-fun='textIndent'>缩进</div>
				<div class="operator-menu-item" data-fun='inserthorizontalrule'>插入</div>
				<div class="operator-menu-item" data-fun='linkUrl'>连接</div>
				<div class="operator-menu-item" onclick="print()">显示</div>
			</div>
			<div class="edit-area" id="edit" contenteditable='true'></div>
		</div>
		<script language="javascript">
			var operationItems=document.querySelector('.operator-menu');
			var edit=document.querySelector('.edit-area');
			document.execCommand("defaultParagraphSeparator", false, "p");
			operationItems.addEventListener('mousedown',function(e){
				var target=e.target;
				var funName=target.getAttribute('data-fun');
				if(!window[funName]) return '';
				window[funName]();
				e.preventDefault();
			});
			function fontBold(){
				document.execCommand('bold');
			}
			function textIndent(){
				document.execCommand('indent');
			}
			function inserthorizontalrule(){
				document.execCommand('inserthorizontalrule');
			}
			function linkUrl(){
				
				document.execCommand('createlink',false,window.prompt('输入连接地址'));
			}
			function print(){
				console.log(edit.innerHTML);
			}
			edit.addEventListener('paste',function(e){
				e.preventDefault();
				var txt='';
				var range=null;
				txt=e.clipboardData.getData('text/plain');
				range=window.getSelection().getRangeAt(0);
				range.deleteContents();
				var pasteTxt=document.createTextNode(txt);
				range.insertNode(pasteTxt);
				range.collapse(false);
			})
		</script>
	</body>
</html>

参考:http://eux.baidu.com/blog/fe/%E5%88%A9%E7%94%A8-javascript-%E5%AE%9E%E7%8E%B0%E5%AF%8C%E6%96%87%E6%9C%AC%E7%BC%96%E8%BE%91%E5%99%A8

https://developer.mozilla.org/zh-CN/docs/Web/API/Document/execCommand
https://www.cnblogs.com/xiaohuochai/p/5884206.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值