Я пытаюсь создать букмарклет, который при нажатии вставляет определенный текст в активный в данный момент текстовый элемент управления. Не суди.
Итак, это мой код:
(function()
{
var t="<<< VALUE >>>";
var a=document.activeElement;
if(!a) alert("No active element found.");
if(!!a)
if(a.nodeName=="TEXTAREA"||a.nodeName=="INPUT")
if(!a.value) a.value=t;
else a.value+=t;
else if(a.nodeName=="DIV"&&a.isContentEditable==true)
if(!a.textContent) a.textContent=t;
else a.textContent+=t;
}
)();
Работает для текстовых областей и входных данных, но не для редактируемых div. Это действительно меняет текст, но потом элемент управления нарушается, и я больше не могу использовать клавишу Backspace или удалить ее.
Как мне установить содержимое такого div без каких-либо торможений?
Лучшее место для проверки это якобы facebook. Сфокусируйтесь на текстовом контроле для новой записи, затем выполните функцию. Вы заметите, что больше не можете использовать клавишу возврата и удалять.
// РЕДАКТИРОВАТЬ
После некоторых комментариев и экспериментов с jsfiddle похоже, что это действительно проблема, связанная с Facebook. Я обновил название соответственно. Все еще сбивает с толку меня, почему это поведение и как его преодолеть.