javascript文本编辑器-如何捕获选择
我正在尝试编写一个简单的web文本编辑器。 我想做的是让用户在文本区域(或类似文本区域的输入)上键入文本,然后用鼠标或shift键选择文本,然后单击按钮以应用基于颜色的效果。 我的问题是:javascript文本编辑器-如何捕获选择,javascript,jquery,Javascript,Jquery,我正在尝试编写一个简单的web文本编辑器。 我想做的是让用户在文本区域(或类似文本区域的输入)上键入文本,然后用鼠标或shift键选择文本,然后单击按钮以应用基于颜色的效果。 我的问题是: 我如何以一种不会丢失的方式捕获所选内容 按钮被点击 如何保存文本和所选内容 如何做到所见即所得 p、 我不想要一个完整的富文本编辑器。我只需要一种效果 谢谢 如何在单击按钮时不丢失选择内容 如何保存文本和所选内容 我完全相信这一点。它用另一个字符串替换当前选择 我们通过获取颜色选择器的值并将其放入sp
- 如何在单击按钮时不丢失选择内容
- 如何保存文本和所选内容
- 如何做到所见即所得
contenteditable
div,并在表单提交时将输出导入隐藏的文本区域
在这里,一切都在一起。同样,第一个函数replaceSelection()
不是我的代码
document.getElementById('color').onchange=function(){
var replace=document.createElement('span');
replace.style.color=this.value;
replace.textContent=window.getSelection().toString();
replaceSelection(replace.outerHTML,true);
}
document.getElementById('wysiwyg')。onsubmit=function(){
document.getElementById('result').textContent=document.getElementById('#input').innerHTML;
}
//@TimDown
函数替换选择(html,选择插入){
变量sel,范围,片段;
sel=window.getSelection();
//测试选择对象是否至少包含一个范围
if(sel.getRangeAt&&sel.rangeCount){
//获取第一个范围(只有Firefox支持多个)
range=window.getSelection().getRangeAt(0);
range.deleteContents();
//创建DocumentFragment以插入并填充HTML
//需要测试range.CreateContexturalFragment是否存在
//因为它是非标准的,IE 9不支持它
if(range.createContextalFragment){
fragment=range.createContextualFragment(html);
}否则{
//在IE9中,我们需要使用临时元素的innerHTML
var div=document.createElement(“div”),子级;
div.innerHTML=html;
fragment=document.createDocumentFragment();
while((child=div.firstChild)){
片段。追加子对象(子对象);
}
}
var firstInsertedNode=fragment.firstChild;
var lastInsertedNode=fragment.lastChild;
range.insertNode(片段);
如果(选择插入){
if(第一个插入节点){
range.setStartBefore(firstInsertedNode);
range.setEndAfter(lastInsertedNode);
}
选择removeAllRanges();
选择添加范围(范围);
}
}
}
#输入{
最小高度:100px;
边界半径:5px;
边框:1px实心#ccc;
填充物:5px;
边缘底部:1px;
}
#结果{
显示:无;
}
#所见即所得输入[type=“submit”]{
高度:2米;
浮动:对;
}
- 如何在单击按钮时不丢失选择内容
- 如何保存文本和所选内容
- 如何做到所见即所得
contenteditable
div,并在表单提交时将输出导入隐藏的文本区域
在这里,一切都在一起。同样,第一个函数replaceSelection()
不是我的代码
document.getElementById('color').onchange=function(){
var replace=document.createElement('span');
replace.style.color=this.value;
replace.textContent=window.getSelection().toString();
replaceSelection(replace.outerHTML,true);
}
document.getElementById('wysiwyg')。onsubmit=function(){
document.getElementById('result').textContent=document.getElementById('#input').innerHTML;
}
//@TimDown
函数替换选择(html,选择插入){
变量sel,范围,片段;
sel=window.getSelection();
//测试选择对象是否至少包含一个范围
if(sel.getRangeAt&&sel.rangeCount){
//获取第一个范围(只有Firefox支持多个)
range=window.getSelection().getRangeAt(0);
range.deleteContents();
//创建DocumentFragment以插入并填充HTML
//需要测试range.CreateContexturalFragment是否存在
//因为它是非标准的,IE 9不支持它
if(range.createContextalFragment){
fragment=range.createContextualFragment(html);
}否则{
//在IE9中,我们需要使用临时元素的innerHTML
var div=document.createElement(“div”),子级;
div.innerHTML=html;
fragment=document.createDocumentFragment();
while((child=div.firstChild)){
片段。追加子对象(子对象);
}
}
var firstInsertedNode=fragment.firstChild;
var lastInsertedNode=fragment.lastChild;
range.insertNode(片段);
如果(选择插入){
if(第一个插入节点){
range.setStartBefore(firstInsertedNode);
range.setEndAfter(lastInsertedNode);
}
选择removeAllRanges();
选择添加范围(范围);