相关疑难解决方法(0)

在javascript中从剪贴板获取html

我需要实现RichTextEditors非常常见的任务 - 从剪贴板中获取HTML.任何人都可以帮助指导如何解决这个任务?

它必须是跨平台(IE,FF,Chrome,Opera).我刚从这段代码开始:

<script type="text/javascript">
    $('.historyText').live('input paste', function(e) {

        var paste = e.clipboardData && e.clipboardData.getData ?
        e.clipboardData.getData('text/plain') :                // Standard
        window.clipboardData && window.clipboardData.getData ?
        window.clipboardData.getData('Text') :                 // MS
        false;

        alert(paste);
    });</script>
Run Code Online (Sandbox Code Playgroud)

window.clipboardData和e.clipboardData都为null(Chrome,Firefox).

更新:用户想要粘贴其他浏览器窗口中的文章内容,我需要获取html标签.

javascript clipboard

18
推荐指数
2
解决办法
2万
查看次数

javascript上下文菜单点击事件/检测 - 过滤粘贴内容

场景:我正在尝试拦截textarea/input文本中的粘贴事件,并过滤要粘贴的内容.

Webkit/IE处理得相当好,因为我可以将代码附加到onpaste事件中,然后从剪贴板中读取正在粘贴的内容.大量实例左右.

Gecko比较棘手,因为据我所知,不可能在ffox上读取剪贴板内容 (除非有人知道解决方法吗?)
我只是使用输入交换技巧.

歌剧正在烦人.我可以陷阱CTRL+ VSHIFT+ INS,但没有onpaste事件.
显然,更不用说任何类型的剪贴板交互了.

所以,我的问题是:

我可以检测用户是否 在Opera的上下文菜单中单击了paste 吗?有没有其他方法来检测事件?

编辑:

感谢大家的答案 - 即使没有明确的解决方案,他们都会增加一个好的输入.
不得不选择,我会选择唯一一个试图解决原始问题的人,如果不是太多的黑客甚至尝试,这可能会有用.

那些有同样问题的人的注释(输入过滤):

  • 可以捕捉的内容被拖拽:mouseup+ setTimeout的伎俩几乎处处完美.
  • 没有闪存,可能没有解决方案栏轮询.即使使用闪光灯,它也不是一个完全可靠的解决方案.太多的努力来支持100%的案件.

javascript jquery cross-browser dom-events

17
推荐指数
3
解决办法
6171
查看次数

Javascript OnPaste

我现在有这个:

<input type="text" placeholder="Paste text" onPaste="alert(this.value);">

这确实有效,除了它返回一个空白警报窗口.我没有任何价值.救命?

javascript copy-paste input

17
推荐指数
2
解决办法
3万
查看次数

将HTML转换为contentEditable中的纯文本

我有一个contentEditable,我on('paste')通过捕捉事件剥离粘贴内容的格式.然后我关注textarea,将内容粘贴到那里,然后复制值.几乎是这里的答案.问题是我不能这样做:

$("#paste-output").text($("#area").val());
Run Code Online (Sandbox Code Playgroud)

因为这会用粘贴的文本替换我的整个内容.所以我需要将内容粘贴到插入位置.我整理了一个脚本来做到这一点:

pasteHtmlAtCaret($("#area").val());

// pastes CTRL+V content at caret position
function pasteHtmlAtCaret(html) {
  var sel, range;
  if (window.getSelection) {
    sel = window.getSelection();
    if (sel.getRangeAt && sel.rangeCount) {
      range = sel.getRangeAt(0);
      range.deleteContents();
      var el = document.createElement("div");
      el.innerHTML = html;
      var frag = document.createDocumentFragment(), node, lastNode;
      while ((node = el.firstChild)) {
        lastNode = frag.appendChild(node);
      }
      range.insertNode(frag);

      if (lastNode) {
        range = range.cloneRange();
        range.setStartAfter(lastNode);
        range.collapse(true);
        sel.removeAllRanges();
        sel.addRange(range);
      }
    }
  } else if (document.selection && document.selection.type != …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery text contenteditable

17
推荐指数
2
解决办法
1万
查看次数

如何将剪贴板中的富文本粘贴到HTML textarea元素?

当从Web浏览器复制粘贴到文本处理器时,HTML标记将转换为富文本,文本处理器会尝试将标记转换为自己的格式.这证明剪贴板能够保持标记.

在浏览器窗口(正常<textarea>或其他元素)之间进行复制粘贴时,即使剪贴板中存在标记,也会忽略标记.

也许有一种解决方案可以让浏览器从剪贴板中选择富文本格式.

有没有办法在<textarea>元素中访问剪贴板的富文本?

换一种说法,

是否必须在剪贴板中的某处(因为剪贴板还不知道用户是否粘贴到文本处理器或Web浏览器中)的标记是否可以原样粘贴到HTTP POST变量中?

html javascript jquery

17
推荐指数
2
解决办法
1万
查看次数

如何在跨浏览器中读取剪贴板数据?

可能重复:
使用FireFox,Safari和Chrome在剪贴板上复制/放置文本
如何使用JavaScript复制到剪贴板?

嗨,

场景:我复制了一些内容(来自记事本或单词),并希望将其粘贴到我的iframe中.在粘贴之前我想操纵剪贴板内容.在IE中,我可以使用window.clipboardData.getData("Text"); 如何在其他浏览器中读取剪贴板数据(FF/chrome和safari)

javascript clipboard iframe cross-browser paste

12
推荐指数
2
解决办法
5万
查看次数

撤消JS中的覆盖粘贴

我已忽略了该paste事件。我注意到,由于阻止了事件的默认行为,因此当前无法使用Ctrl + Z撤消“粘贴”。

$(this).on('paste', function (evt) {
  // Get the pasted data via the Clipboard API.
  // evt.originalEvent must be used because this is jQuery, not pure JS.
  // /sf/answers/2088211891/
  var clipboardData = evt.originalEvent.clipboardData || window.clipboardData;
  var pastedData = clipboardData.getData('text/plain');

  // Trim the data and set the value.
  $(this).val($.trim(pastedData));

  // Prevent the data from actually being pasted.
  evt.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以覆盖撤消功能,或者可以做其他不同的操作以使Ctrl + Z起作用?

相关问题

javascript jquery undo paste

11
推荐指数
2
解决办法
293
查看次数

使用AngularJs将html内容粘贴为contenteditable div中的纯文本

我想将从某个文档(pdf,docx,html)中选择的文本粘贴到一个contenteditable类型的div中.

现在我想在渲染之前删除剪贴板文本的所有格式.因此,粘贴的最终内容应该是纯文本.

此方案的类似物可以将内容粘贴到Windows记事本中.

如何使用AngularJs完成此操作.或者存在任何其他javascript库来实现这一点.

更新: 我可以使用以下代码将剪贴板作为文本.

editor.addEventListener("paste", function(e) {
    // cancel paste
    e.preventDefault();

    // get text representation of clipboard
    var text = e.clipboardData.getData("text/plain");

    // insert text manually
    document.execCommand("insertHTML", false, text);
});
Run Code Online (Sandbox Code Playgroud)

但我不知道如何以及在何处在AngularJs中添加此代码.

html javascript plaintext contenteditable angularjs

9
推荐指数
1
解决办法
1万
查看次数

为什么这个onpaste事件没有解雇?

我正在尝试捕获input[type="date"]元素的粘贴事件.在Chrome中,您无法复制/粘贴到此类元素中,因此我尝试将其包装在DIV带有onpaste事件的元素中.我遇到的问题是,如果你点击日期输入并按CTRL+ V没有任何反应.但是,如果您先单击身体中的任何其他位置,然后单击日期输入并按CTRL+ V,它将起作用...

<div onpaste="alert('test')">
    <input type="date">
</div>
Run Code Online (Sandbox Code Playgroud)

演示:

https://jsfiddle.net/4qh31tn0/

编辑:好的,所以事实证明onpaste事件不必在DIV,它可以移动到INPUT元素,但问题仍然存在.如果我加载jsfiddle,单击输入并按CTRL+ V,没有任何反应.如果我INPUT事先单击元素之外的某个位置,然后单击输入并按CTRL+ V,它可以工作...

html javascript

9
推荐指数
1
解决办法
2082
查看次数

按钮单击时在jquery/java脚本中粘贴功能

我有一个写网站url的文本框.我在旁边放了一个按钮.

我想如果用户从任何地方复制网址并单击该按钮,则复制的网址粘贴在该文本框中.

现在我可以使用ctrl + v将url粘贴到文本框中.但是移动用户无法使用它.因此,我需要在文本框中单击该按钮复制的URL粘贴.

任何帮助高度赞赏,并提前感谢.

javascript jquery

8
推荐指数
1
解决办法
1万
查看次数