|
|
|
| Есть задача. Пользователь выделяет данные в файле Word и открывает браузер. Там он вставляет эти данные в форму. Если он вставляет данные в простой textarea - он получает набор неструктурированной информации. Нужно чтобы он получал непосредственно код таким, каким его видит ворд.
Поясню. Во многих визуальных редакторах есть функция "Вставить из Word". Она позволяет вставить данные из Word и почистить их. Фишка в том, что там есть что чистить. А я никак не понимаю как получить этот изначальный код. Почистить его - не проблема.
Покурил гугл, говорят что кроссбраузерного решения нет. В IE говорят работать execCommand() а для остальных браузеров использовать zeroclipboard и прочий флеш.
Что, все так плохо? | |
|
|
|
|
|
|
|
для: SHAman
(21.02.2011 в 12:55)
| | Чтобы "получал непосредственно код таким, каким его видит ворд", нужно чтобы приложение понимало и могло работать с форматом этим. Попробуйте скопировать из Word и вставить в Блокнот. А буфер обмена все содержит в своем формате. | |
|
|
|
|
|
|
|
для: sim5
(21.02.2011 в 13:20)
| | Ну вот здесь используется как-то хитро iframe. Если вставить туда, скажем, таблицу из ворда - он отобразит все как надо, хоть и грязновато. Если нажать "чистить", то мы увидим вкладку "OriginalHTML", которая содержит изначальный код, который обрабатывался и чистился.
Меня интересует как этот код они получили и как его можно получить мне. Я медитировал на их код (не долго, правда) но не уловил как они это делают.
Может быть кто-то знает с наскоку хотя бы технологию или куда копать. Ну или поможет разобраться в их коде. | |
|
|
|
|
|
|
|
для: SHAman
(21.02.2011 в 13:33)
| | Буфер обмена несёт инфу о форматировании текста - отступы, курсивы, жирность... не в виде HTML-кода, а ЯВНО.
HTML-код создаёт тело (тег <BODY>) документа, который находится в ифрейме.
А создаёт ПОТОМУ, что у этого тега <BODY> включён режим ContentEditAble="true"
<iframe style="width: 500px; height: 300px" id="myIFR"></iframe>
<script>
window.frames ['myIFR'].document.write ("<body CONTENTEDITABLE>Вставьте сюда что-то отформатированное из WORD'a</body>");
</script>
<br>
<input type="button" value="Смотрим HTML-код вставленного" onclick="alert (window.frames ['myIFR'].document.body.innerHTML)">
|
А можете и не из WORD'a вставлять - а просто что-то написать, затем выделить часть написанного и, например, сделать эту часть жирной (нажав CTRL+B) или курсивом (нажав CTRL+I)... а потом посмотрите - какой HTML-код будет у получившегося.
Так что из WORD'a берется ЯВНЫМ образом отформатированный текст,
HTML-код, который у ребят с сайта назван "Оригинальным", к WORD'у никакого отношения не имеет - этот код создаёт тег <BODY>.
А потом ребята средствами PHP его "чистят", сиречь по какому-то своему алгоритму заменяют какие-то одни HTML-конструкции на другие, которые, на их взгляд, - попроще (и "полегче" в байтах). Например, <STRONG></STRONG> меняют на <B></B>. | |
|
|
|
|
|
|
|
для: Абырвалг
(21.02.2011 в 16:03)
| | Вот спасибо! Не знал про этот атрибут. Все поставил на место. | |
|
|
|