使用 JavaScript 更改所选文本的 CSS
在创建一个突出显示网页上所选文本的小书签时,开发人员遇到了用于更改所选文本 CSS 的 jQuery 代码不起作用的问题。
原始尝试:
尝试的代码使用以下函数:
function highlightSelText() { var SelText; if (window.getSelection) { SelText = window.getSelection(); } else if (document.getSelection) { SelText = document.getSelection(); } else if (document.selection) { SelText = document.selection.createRange().text; } $(SelText).css({'background-color' : 'yellow', 'font-weight' : 'bolder'}); }
解决方案:
原始代码的问题是由于 jQuery 无法直接修改所选文本的 CSS。更有效的方法是利用 execCommand() 方法,该方法提供了在各种现代浏览器中更改背景颜色的命令。
以下代码演示了如何突出显示任何文本选择:
function makeEditableAndHighlight(colour) { var range, sel = window.getSelection(); if (sel.rangeCount && sel.getRangeAt) { range = sel.getRangeAt(0); } document.designMode = "on"; if (range) { sel.removeAllRanges(); sel.addRange(range); } 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 更改选定文本的 CSS?的详细内容。更多信息请关注PHP中文网其他相关文章!