Я не упоминал об этом в вашем предыдущем вопросе по этому поводу, потому что это звучало так, как будто вы хотели использовать универсальные средства для окружения диапазона внутри элемента, но для этого конкретного приложения (например, выделение шрифтом / развёртывание текста) и предполагая, что вы неНе обращая внимания на небольшие различия между браузерами в используемых точных тегах (<strong>
против <bold>
против, возможно, <span style="font-weight: bold">
), лучше всего использовать document.execCommand()
, который переключит жирность:
function toggleBold() {
document.execCommand("bold", false, null);
}
Это будет работать во всех браузерах, когда выбранный контент редактируемый, и даже если он не редактируется в IE.Если он вам нужен для работы с нередактируемым контентом в других браузерах, вам нужно временно сделать документ редактируемым:
function toggleBold() {
var range, sel;
if (window.getSelection) {
// Non-IE case
sel = window.getSelection();
if (sel.getRangeAt) {
range = sel.getRangeAt(0);
}
document.designMode = "on";
if (range) {
sel.removeAllRanges();
sel.addRange(range);
}
document.execCommand("bold", false, null);
document.designMode = "off";
} else if (document.selection && document.selection.createRange &&
document.selection.type != "None") {
// IE case
range = document.selection.createRange();
range.execCommand("bold", false, null);
}
}