Я пытаюсь обработать контент-контент в iframe, чтобы браузеры не добавляли br
, p
или div
самостоятельно при нажатии Enter. Но что-то странное происходит при попытке сбросить фокус, и он просто работает при создании предупреждения() перед обработкой остальной части кода. Я думаю, что это связано с тем, что javascript нужно некоторое время для выполнения операций, но должен быть способ сделать это без «спящего» сценария ...Javascript - работает только в том случае, если я делаю предупреждение()
Здесь я вставляю свой код (работая с JQuery), только С помощью кнопки " магия Alerts»она прекрасно работает:
//PREVENT DEFAULT STUFF
var iframewindow=document.getElementById('rte').contentWindow;
var input = iframewindow.document.body;
$(input).keypress(function (e) {
var sel, node, offset, text, textBefore, textAfter, range;
// the Selection object
sel = iframewindow.getSelection();
alert(sel); //MAGIC ALERT
// the node that contains the caret
node = sel.anchorNode;
alert(node); //MAGIC ALERT
// if ENTER was pressed while the caret was inside the input field
if (node.parentNode === input && e.keyCode === 13) {
// prevent the browsers from inserting <div>, <p>, or <br> on their own
e.preventDefault();
// the caret position inside the node
offset = sel.anchorOffset;
// insert a '\n' character at that position
text = node.textContent;
textBefore = text.slice(0, offset);
textAfter = text.slice(offset) || ' ';
node.textContent = textBefore + '\n' + textAfter;
SEEREF=SEEREF.replace(/\n/g, "<br>");
// position the caret after that newBR character
range = iframewindow.document.createRange();
range.setStart(node, offset + 4);
range.setEnd(node, offset + 4);
// update the selection
sel.removeAllRanges();
sel.addRange(range);
}
});
SEEREF = framewindow.document.body.innerHTML (это было слишком долго)
Редактировать Когда я удалить Оповещения Волшебные он все еще работает на Chrome , но в FF он фокусируется на начале всех! (Как если бы это было смещение = 0)
UPDATE
Похоже, что porblem является линия, которая заменяет переводы строк с br
тегов. Если я удалю эту строку, она отлично работает даже без предупреждений. Мне нужно сохранить эти теги br
, есть ли другой способ сделать это?
Является ли 'console.log' делать то же самое? – Mageek
Что произойдет, если вы опустите предупреждения? Что такое сообщение об ошибке? – Christoph
@Mageek Я не знал, что это такое ... (здесь у меня есть ответ, и я попробую - http://stackoverflow.com/questions/4743730/javascript-what-is-console-log-and-how -do-i-use-it) спасибо! – Kenedy