javascript - 替换选定 - 由 contenteditable div 中的所需 html
问题描述
请全选并单击按钮,
这是我替换选中的方式 - 使用所需的 html,在 Chrome
中它基本上可以工作,但是 - 两个问题:
- 有没有更本土的方法来做同样的事情?特别是关于
execCommand
我想避免的 - 有时行尾不是
\n\n
but\n
。将来它可能是一些新的。有没有办法检测到它并通过检测到拆分?
$('button').on('click', function(){
let a = window.getSelection().toString();
let arr = a.split("\n\n");
var count = arr.length;
var final = '';
$(arr).each(function(key, val){
if(key == 0){val = "<p class='dg'>" + val + "<br>" + "\n"}
else if(key == count-1){val = val + "</p>" + "\n";}
else{val = val + "<br>" + "\n";}
final += val;
});
document.execCommand('insertHtml', false, final);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='cedit' contenteditable>
<p>lorem</p>
<p>ipsum</p>
<p>dolor</p>
<p>sit</p>
</div>
<button>CLICK</button>
解决方案
推荐阅读
- c# - 在 C# 中使用 LDAP 检查 Active Directory 中存在的用户列表
- opencv - 非局部均值滤波器可以处理哪些类型的噪声?双边与非本地过滤器
- windows - 在 Windows 上捕获和显示实时摄像机内容
- arrays - 如何在 swift 代码中获取小于 5 的数组的数字/元素?
- c# - 'System.ServiceModel.CommunicationObjectFaultedException 类型的异常
- php - 从 Google Apps 的群组列表中更新和删除成员不再起作用
- cordova - 在 Ionic Cordova 项目中添加 onesignal-cordova-plugin 时如何生成 Pods 文件夹?
- sql - SQL 动态地将值拆分为新列
- python - 使用 Flask 和 Python 从另一台远程服务器在远程服务器上运行 Python 脚本
- apache-spark - 如何在pyspark中将单个列动态转置为多行?