Как сделать contentEditable работу в iOS 5/iOS 6
В настоящее время я работаю над contenteditable iframe, который до сих пор отлично работает во всех браузерах, кроме мобильного Safari. Я использую iOS 5.1.1. Эта проблема воспроизводится в любой версии iOS, которая поддерживает contentEditable до последней версии.
Проблема заключается в следующем:
Когда вы нажимаете на него, контент правильно фокусируется, вы можете перемещать курсор и все, однако, как только вы применяете к нему действие, происходит следующее:
Фокус все еще находится в iframe, и вы можете видеть курсор, однако он не отвечает на keydown, как это делалось ранее. Ничего не происходит, даже если я перемещаю курсор и все еще пытаюсь ввести что-либо внутри.
Вот пример того, что происходит:
http://www.quirksmode.org/dom/execCommand/
Если вы фокусируете iframe в любом месте содержимого и говорите, что вы применяете выравнивание по вертикали. Содержимое правильно выровнено вправо, но если вы попытаетесь ввести какие-либо дополнительные символы, вы увидите, что блокировки ui, но не появляются новые символы внутри курсора. Если вы попытаетесь применить другую команду, она все равно будет работать.
Есть ли у кого-нибудь представление о том, как я могу это решить?
Ответы
Ответ 1
вы можете просто использовать режим проектирования iframes вместо атрибута contenteditable, чтобы изменить любые элементы HTML.
код javascript для создания элементов в iframe editable:
var iframe = document.getElementById ('the iframe Id ') ;
var doc = iframe.contentDocument || iframe.contentWindow.document;
doc.designMode = "on";
Поскольку я не читаю проблемы с перекрестным браузером, найденные в этом методе
для полной справки см. здесь
Ответ 2
Обновляет ли ваша версия iOS? Я просто протестировал все условия, описанные с помощью iOS 6.1, без проблем.
Поскольку iOS5 была первой версией iOS Safari для поддержки редактируемого контента, вероятно, что в реализации были ошибки. Кажется, он созрел.
Ответ 3
iOS 5.1.1 поддерживает очень минимальные возможности HTML5. Он будет отлично работать после того, как вы обновите его до iOS 7.