我在处理换行符时遇到使用ZeroClipboard(https://github.com/zeroclipboard/zeroclipboard)的问题。
我的想法是将一些HTML内容复制到内部剪贴板并将其粘贴到Win32应用程序中(我的意思是一些商业应用程序,但在这种情况下它的行为就像简单的记事本)。
将数据粘贴到网络浏览器(Chrome)或其他一些文本编辑应用程序(如记事本++)时,一切正常,但是当文本粘贴到记事本时,不会保留换行符 - 作为交换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</button>';
?>
<script>
$(function() {
var clip = new ZeroClipboard($(".d_clip_info"));
});
</script>
答案 0 :(得分:0)
我终于在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");
}
}
};