Javascript突出显示所选范围按钮
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javascript突出显示所选范围按钮,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1650字,纯文字阅读大概需要3分钟。
内容图文
![Javascript突出显示所选范围按钮](/upload/InfoBanner/zyjiaocheng/807/2881e387a38942b1a28b1385291b257d.jpg)
我正在尝试为页面创建一个学习工具,允许用户选择页面上的任何文本并单击按钮.然后,此单击将使用黄色背景格式化所选文本.我可以在单个标签内部进行此工作,但如果选择范围跨越多个标签(例如,无序列表中的第一个LI以及第二个的一半),我将难以应用该样式.不幸的是,我不能在这里用一个跨度包装选择.
基本上,我想要与contentEditable和execCommand相关联的效果,而不实际在页面上进行任何可编辑的操作,只需单击按钮将背景颜色应用于所选文本.
我对jQuery解决方案持开放态度,发现this plug-in似乎简化了跨浏览器创建范围的能力,但我无法使用它将任何格式应用于所选范围.我可以从控制台看到它正在接受选择,但使用类似的东西:
var selected = $().selectedText();
$(selected).css("background-color","yellow");
没有效果.
任何指导我正确方向的帮助将不胜感激.
解决方法:
以下应该做你想要的.在非IE浏览器中,它打开designMode,应用背景颜色,然后再次关闭designMode.
UPDATE
修复了在IE 9中工作.
function makeEditableAndHighlight(colour) {
sel = window.getSelection();
if (sel.rangeCount && sel.getRangeAt) {
range = sel.getRangeAt(0);
}
document.designMode = "on";
if (range) {
sel.removeAllRanges();
sel.addRange(range);
}
// Use HiliteColor since some browsers apply BackColor to the whole block
if (!document.execCommand("HiliteColor", false, colour)) {
document.execCommand("BackColor", false, colour);
}
document.designMode = "off";
}
function highlight(colour) {
var range, sel;
if (window.getSelection) {
// IE9 and non-IE
try {
if (!document.execCommand("BackColor", false, colour)) {
makeEditableAndHighlight(colour);
}
} catch (ex) {
makeEditableAndHighlight(colour)
}
} else if (document.selection && document.selection.createRange) {
// IE <= 8 case
range = document.selection.createRange();
range.execCommand("BackColor", false, colour);
}
}
内容总结
以上是互联网集市为您收集整理的Javascript突出显示所选范围按钮全部内容,希望文章能够帮你解决Javascript突出显示所选范围按钮所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。