Как обрабатывать разрывы строк с помощью ZeroClipboard и Windows?

Я столкнулся с проблемой использования ZeroClipboard (https://github.com/zeroclipboard/zeroclipboard) при работе с символами новой строки.

Моя идея - скопировать некоторый HTML-контент во внутренний буфер обмена и вставить его в приложение Win32 (я имею в виду какое-то деловое приложение, но в этой ситуации он ведет себя как простой блокнот).

При вставке данных в веб-браузер (Chrome) или в другое приложение для редактирования текста (например, notepad++) все работает нормально, но когда текст вставляется в блокнот, разрывы строк не сохраняются - в обмен на CRLF есть неизвестный символ.

Вот пример кода:

<!--?php
 $ClipboardText = pack("a*CCa*", "xxx", $newLine0, $newLine, "yy");

 print '<button id="d_clip_button" class="d_clip_info" data-clipboard-text="'.$ClipboardText.'"-->Copy text';
?>
1 ответ

Я, наконец, сделал трюк в ZeroClipboard, чтобы справиться с этим, вот код

var _setData = function(format, data) {
 var dataObj;
 if (typeof format === "object" && format && typeof data === "undefined") {
 dataObj = format;
 ZeroClipboard.clearData();
 } else if (typeof format === "string" && format) {
 dataObj = {};
 dataObj[format] = data;
 } else {
 return;
 }
 for (var dataFormat in dataObj) {
 if (typeof dataFormat === "string" && dataFormat && _hasOwn.call(dataObj, dataFormat) && typeof dataObj[dataFormat] === "string" && dataObj[dataFormat]) {
 // Here is the tweak to replace all \n with \r\n characters in data sended to clipboard
 _clipData[dataFormat] = dataObj[dataFormat].replace(/\n/g, "\r\n");
 }
 }
 };

licensed under cc by-sa 3.0 with attribution.