Я занимаюсь разработкой wysiwyg HTML-редактора с использованием javascript и редактируемого iframe. Прежде чем приступить к разработке редактора, я провел некоторые исследования в других редакторах HTML, которые используют javascript и iframes (включая CKEditor ), и есть одна особенность, которую я пытаюсь дублировать.
В некоторых редакторах HTML на основе iframe / JS, если пользователь желает получить доступ или отредактировать атрибуты элемента (например, размеры изображения, URL-адрес гиперссылки, ширину таблицы), он может просто дважды щелкнуть элемент, и появится модальный div с текстовые поля, содержащие значения атрибутов этого элемента и / или элементов этого элемента.
До сих пор самым близким к разработке такой функции было создание сценария, который предупреждает HTML-код области внутри фрейма, на которой пользователь дважды щелкает. Я добавил этот код на свою HTML-страницу;
<iframe name="wysiwyg" id="wysiwyg" onload="dblClick();"></iframe>
и добавил этот код в мой файл JavaScript;
function dblClick(){
document.getElementById("wysiwyg").contentWindow.document.ondblclick=dblClicked;
window.frames["wysiwyg"].document.body.ondblclick=dblClicked;
}
function dblClicked (){
txt = wysiwyg.document.selection.createRange().htmlText;
alert(txt);
}
Проблема в том, что этот код работает только тогда, когда пользователь дважды щелкает и выделяет часть текста, например, двойной щелчок по выделенному жирному тексту предупреждает пользователя об этом куске кода;
<b>text</b>
Все, что я дважды нажимаю, предупреждает об ошибке. Кроме того, он работает правильно только в Internet Explorer. Когда я тестировал его в Firefox, Opera, Chrome и Safari, сценарий либо не работал, либо не работал должным образом (в Firefox сценарий предупреждал об ошибках сразу после загрузки страницы).
Мне нужен скрипт, который позволяет конечному пользователю просматривать все свойства любого элемента, на котором они дважды щелкают в редактируемом iframe, и работает во всех основных браузерах.
Я знаю, что было бы проще просто использовать существующий редактор wysiwyg, но я предпочитаю создавать свой собственный с нуля, поскольку мне нравится этот вызов. Кроме того, я знаю, что CKEditor, по-видимому, не использует iframe, как мой, но я ссылаюсь на него как на пример той функциональности, которой я хочу достичь.
Любая помощь будет оценена.