Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Получить содержимое буфера обмена, содержащего данные из Word
 
 автор: SHAman   (21.02.2011 в 12:55)   письмо автору
 
 

Есть задача. Пользователь выделяет данные в файле Word и открывает браузер. Там он вставляет эти данные в форму. Если он вставляет данные в простой textarea - он получает набор неструктурированной информации. Нужно чтобы он получал непосредственно код таким, каким его видит ворд.

Поясню. Во многих визуальных редакторах есть функция "Вставить из Word". Она позволяет вставить данные из Word и почистить их. Фишка в том, что там есть что чистить. А я никак не понимаю как получить этот изначальный код. Почистить его - не проблема.

Покурил гугл, говорят что кроссбраузерного решения нет. В IE говорят работать execCommand() а для остальных браузеров использовать zeroclipboard и прочий флеш.

Что, все так плохо?

  Ответить  
 
 автор: sim5   (21.02.2011 в 13:20)   письмо автору
 
   для: SHAman   (21.02.2011 в 12:55)
 

Чтобы "получал непосредственно код таким, каким его видит ворд", нужно чтобы приложение понимало и могло работать с форматом этим. Попробуйте скопировать из Word и вставить в Блокнот. А буфер обмена все содержит в своем формате.

  Ответить  
 
 автор: SHAman   (21.02.2011 в 13:33)   письмо автору
 
   для: sim5   (21.02.2011 в 13:20)
 

Ну вот здесь используется как-то хитро iframe. Если вставить туда, скажем, таблицу из ворда - он отобразит все как надо, хоть и грязновато. Если нажать "чистить", то мы увидим вкладку "OriginalHTML", которая содержит изначальный код, который обрабатывался и чистился.

Меня интересует как этот код они получили и как его можно получить мне. Я медитировал на их код (не долго, правда) но не уловил как они это делают.

Может быть кто-то знает с наскоку хотя бы технологию или куда копать. Ну или поможет разобраться в их коде.

  Ответить  
 
 автор: Абырвалг   (21.02.2011 в 16:03)   письмо автору
 
   для: 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>.

  Ответить  
 
 автор: SHAman   (21.02.2011 в 16:52)   письмо автору
 
   для: Абырвалг   (21.02.2011 в 16:03)
 

Вот спасибо! Не знал про этот атрибут. Все поставил на место.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования