如何使用ZeroClipboard和Windows处理换行符?

时间:2014-07-01 13:54:27

标签: javascript windows line-breaks zeroclipboard

我在处理换行符时遇到使用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>

1 个答案:

答案 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");
      }
    }
  };