使用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中文網其他相關文章!