Как использовать javascript для редактирования iframe в режиме конструктора с юникод-символом иностранного языка? - PullRequest
2 голосов
/ 12 мая 2011

Я занимаюсь разработкой редактора WYSIWYG с использованием техники iframe. Мне нужно знать идею, чтобы установить метод JavaScript для переопределения события клавиатуры, заменяя charCode на другой CharCode другого языка. Например, если я нажму «а», он вернет арабский набор символов на клавиатуре арабского языка.

ОБНОВЛЕНИЕ - 14 мая 2011 Мне удалось реализовать решение, предложенное @Tim, только в браузере Chrome. Я заметил несовместимость включения designMode = "on", когда он создается внутри DOM с использованием JavaScript. Ниже приведен код, и вы также можете увидеть тестовую страницу здесь - jsfiddle

JAVASCRIPT - JQUERY

$(document).ready(function(){
var textarea = $("#textarea"); 
var frame = $("<iframe class='thaana-editor-html' id='editable' />");
$(frame).width('500px'); 
$(frame).height('250px'); $(textarea).parent().prepend(frame);
var iframe = document.getElementById("editable"); 
var iframeObject = $(iframe).contents().get(0); 
iframeObject.designMode = "on";

});

HTML

<div id="content">
<textarea class="thaanaEditor" id="textarea" ></textarea>
</div>

Я тестировал на

  • Chrome v11 - отлично работает
  • IE8 - отлично работает
  • IE9 - еще не тестировался
  • Firefox -3.6 & 4 - НЕ работает - iframe не редактируется как в режиме дизайна

Ответы [ 2 ]

2 голосов
/ 12 мая 2011

Я уже отвечал на аналогичный вопрос раньше: Требуется установить позицию курсора в конец div ContentEditable, проблему с объектами выделения и диапазона (см. Также Изменение нажатия клавиши ) , Тот же метод применяется к редактируемому iframe: вам нужно добавить обработчик события нажатия клавиши в документ iframe. Например:

function handleKeypress(evt) {
    // See linked answer for implementation
}

var iframe = document.getElementById("your_iframe_id");
var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;

if (iframeDoc.addEventListener) {
    iframeDoc.addEventListener("keypress", handleKeypress, false);
} else if (iframeDoc.attachEvent) {
    iframeDoc.attachEvent("onkeypress", handleKeypress);
}
0 голосов
/ 14 мая 2011

Насколько я понимаю, вы хотите заставить своего пользователя писать с вашей виртуальной клавиатуры, например, когда пользователь нажал D, вы отображаете ي и ...

В персидском языке мы в основном используем эту библиотеку JavaScript , созданную Махди ХашемиНежад . С этим ваш пользователь может переключаться между персидской и английской клавиатурой. Чтобы изменить клавиатуру для вашей локали, вы можете заменить эквиваленты Unicode (для арабских пользователей большинство из них находятся в нужном месте, а некоторые из них изменены)

сообщите мне, если есть проблема

...