7

私は wysiwyg エディターを微調整しており、選択したテキストを削除するアイコンを作成しようとしていますh2

以前のバージョンでは、次のコマンドは完全に機能しました。

oRTE.document.execCommand("removeformat", false, "");

しかし、現在のバージョンでは、そのコマンドは選択されたテキストから太字、下線、斜体などのタグを正常に削除しますが、h2タグはそのまま残ります。

(興味深いことに、タグexecCommand("formatblock"...)の作成に成功しました。)h2

私は放棄execCommandして別の方法を見つけなければならないと考えていますが、それは単なる 1 行のコードよりもはるかに多くなると考えています! 提案に感謝します。

4

3 に答える 3

7

フォーマットを div に変更できます。これは最善の解決策ではありませんが、機能し、短いです。

document.execCommand('formatBlock', false, 'div')

選択したテキストから最も近い親を取得するこの他のソリューションもあり、ラップを解除できます。これは <b> のようなタグであることに注意してください。

var container = null;
if (document.selection) //for IE
    container = document.selection.createRange().parentElement();
else {
    var select = window.getSelection();
    if (select.rangeCount > 0)
        container = select.getRangeAt(0).startContainer.parentNode;
}
$(container).contents().unwrap(); //for jQuery1.4+
于 2013-11-09T01:35:08.710 に答える
5

これは、提案されたW3C Editing APIに従っています。フォーマット要素のリストがあり、H#要素はリストされていません。これらは、単なる書式設定ではなく、構造的なものと見なされます。ULこれらのタグを削除することは、またはを削除するよりも意味がありませんP

于 2012-12-25T08:19:45.687 に答える
1

Rangeオブジェクトを使用できると思います。Professional JavaScript for Web Developers 3rd Edition から見つけることができます。第12章(12.4)および第14章(14.5) ...

その本の例:

var selection = frames["richedit"].getSelection();

var selectedText = selection.toString();

var range = selection.getRangeAt(0);

var span = frames["richedit"].document.createElement("span");
span.style.backgroundColor = "yellow";
range.surroundContents(span);
于 2015-05-14T03:06:19.487 に答える