JavaScript を使用して選択したテキストの CSS を変更する
Web ページ上で選択したテキストを強調表示するブックマークレットを作成しようとしている開発者は、選択したテキストの 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 中国語 Web サイトの他の関連記事を参照してください。