如何取消粗体文本?一个小小的所见即所得的编辑器
How to unbold text? A tiny WYSIWYG editor
Hey Stackoverflow community,
有一种方法str.bold()
将文本包装在<b></b>
标签中。这对于一个小小的所见即所得的编辑器来说是完美的(我知道有些人会说我应该采用数百个开源解决方案之一,但这也是为了学习目的)。
问题是如何取消加粗文本。
这是我的尝试 http://jsfiddle.net/Kxmaf/178/
我知道有editor.execCommand('bold', false, '');
但这在每个浏览器上产生不同的 HTML 结果。我只需要<b></b>
、<i></i>
、<u></u>
任何帮助都非常感谢:)
在按下特定的样式按钮时,使用 javascript 循环访问选定的字符串怎么样。 您可以保存几个标签,例如、、...。在数组中,然后遍历您选择的特定字符串。因此,您甚至可以在找到任何标签时更改样式按钮的样式,让用户知道刚刚使用了哪种样式。取消选择样式后,只需再次循环并从字符串中删除标签。
您需要考虑用户的选择跨越段落的情况。例如(用竖线指示的选择边界):
<p>One <b>t|wo</b></p>
<p>Thr|ee</p>
要处理此问题,您需要将用户选择中的所有文本节点和部分文本节点包装在<b>
标签中,同时检测哪些文本节点已经加粗并保留它们。这并非易事,document.execCommand()
为您处理这一切,所见即所得的大型编辑器也是如此。
大多数浏览器允许在样式模式之间切换,允许您选择使用 <b>
和 <i>
等元素进行样式设置,或使用具有样式属性的<span>
元素进行样式设置。您可以使用"StyleWithCSS"命令执行此操作,在旧浏览器中回退到"UseCSS"。以下命令切换为使用非 CSS 版本:
try {
if (!document.execCommand("StyleWithCSS", false, useCss)) {
// The value required by UseCSS is the inverse of what you'd expect
document.execCommand("UseCSS", false, !useCss);
}
} catch (ex) {
// IE doesn't recognise these commands and throws.
}
最后,如果你切换到使用 CSS 类而不是<b>
等,你可以使用我的 Rangy 库的 CSS 类应用器模块。
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用类从一个标记中双击事件
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 我应该如何从xml文件构建一个javascript页面
- Regex代码只允许一个空格
- 如何取消粗体文本?一个小小的所见即所得的编辑器