Какие алгоритмы используются для преобразования содержимого HTTP в текст в буфере обмена? - PullRequest
0 голосов
/ 02 марта 2011

Я заметил, что если вы копируете и вставляете содержимое веб-браузера в Блокнот (или в любой текстовый редактор), вы получите разные результаты, в зависимости от используемого браузера.

То есть, если вы попробуете следующее:

  1. Ctrl-A (внутри IE, Firefox, Хром и пр.)
  2. Ctrl-C
  3. Ctrl-V (внутри Блокнота)

Вы увидите, что текстовое содержимое из Internet Explorer отличается от содержимого из Firefox.

(я проводил этот тест на Windows XP и Windows 7)

Почему это?

Могут ли веб-браузеры свободно использовать любой алгоритм, который они выбирают, для преобразования HTML-содержимого в CF_TEXT?

Если это так, существуют ли "минимальные правила", которых они должны придерживаться?

1 Ответ

1 голос
/ 07 марта 2011

Когда вы копируете данные из браузера, браузер отвечает за преобразование данных в различные форматы буфера обмена.Поскольку все эти преобразования данных могут быть дорогими, большинство браузеров откладывают преобразование до тех пор, пока не будет сделан вызов для извлечения данных из буфера обмена.Согласно MSDN , это достигается путем вызова SetClipboardData со значением NULL для второго параметра.Когда позднее выполняется вызов GetClipboardData, браузер получает сообщение WM_RENDERFORMAT или WM_RENDERALLFORMATS.Именно в этот момент браузер выполняет преобразование в текст.Нет конкретных правил, которым должен следовать браузер при выполнении этого преобразования.

...