document.execCommand не работает должным образом

Я работаю над очень простым проектом JS (для моего клиента, поэтому я не могу использовать для этого jQuery, мэм.)

Итак, в основном у меня есть несколько таких кнопок:

button.onClick="document.execCommand('bold', false, null);";

и другие, такие как курсив, подчеркивание и т. д.

Проблема в том, что они не работают. Я точно знаю, что execCommand работает, потому что я проверил его с таймером, и он действительно работает. Причина, по которой это не так, заключается в том, что когда я нажимаю на нее, текст из div contentEditable=true становится невыбранным.

Есть ли способ избежать этого?

Заранее спасибо.


boldBtn = document.createElement('a');
boldBtn.innerHTML = "make text bold";
    document.getElementById("toolbox").appendChild(boldBtn);

boldBtn.onClick="document.execCommand('bold', false, null);";

person john smith    schedule 17.12.2012    source источник
comment
взгляните на редактирование.   -  person john smith    schedule 17.12.2012


Ответы (2)


Если вы используете javasript, вы бы предпочли настроить слушателей на настоящие функции, а не на строки, которые являются функциями.

boldBtn.setAttribute("href", "#");
boldBtn.onClick = function()
{
    document.execCommand("bold", false, null); //or maybe exec bold(false); directly ?
    return false;
};
person y_nk    schedule 17.12.2012
comment
благодарю вас. странно, это все еще не работает, что вы имеете в виду в своем комментарии? - person john smith; 17.12.2012
comment
Мой комментарий заключался в том, что я думаю, что вам не нужна команда execCommand, потому что она может поддерживаться где угодно. Может быть, переключиться на что-то более старое, но более безопасное - person y_nk; 18.12.2012

Почему вы используете именно exeCommand?

Вы можете сделать это с помощью ванильного JavaScript.

document.getElementById("boldBtn").style.fontWeight = "bold";

или поскольку у вас уже есть ссылка

boldBtn.style.fontWeight = "bold"; 
person Alexander Ryan Baggett    schedule 03.03.2017