问题:单击按钮后内容可编辑区域失去焦点
解决思路:在按钮上绑定的事件从@click 改为 @mousedown 事件。因为失去焦点事件是mousedown默认触发的,所以,在点击的按钮上阻止mousedown的默认事件即可
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
[contenteditable] {
width: 300px;
height: 300px;
border: 1px solid black;
}
</style>
</head>
<body>
<div class="actions">
<button data-action="bold">bold</button>
<button data-action="italic">italic</button>
</div>
<div>
<div class="input" contenteditable="true"></div>
</div>
<script>
document.querySelector(".actions").addEventListener("mousedown", function (e) {
var action = e.target.dataset.action;
console.log(action)
if (action) {
document.execCommand(action, false)
e.preventDefault();
}
})
document.querySelector(".input").addEventListener("blur", function (e) {
console.log('shijiao')
})
</script>
</body>
</html>