2017-04-16 4 views
1

Ich folgte dieser Frage JavaScript get clipboard data on paste event (Cross browser), um die eingefügten Daten aus der Zwischenablage zu erhalten, aber ich habe stattdessen jquery verwendet. Jetzt, da ich die Daten bekommen habe, habe ich alle HTML-Tags entfernt. Aber ich weiß nicht, wie ich es einfügen soll. element ist ein contenteditable divWie werden eingefügte Daten geändert? Jquery

element.on('paste', function (e) { 
    var clipboardData, pastedData; 
    e.preventDefault(); 
    // Get pasted data via clipboard API 
    clipboardData = e.clipboardData || window.clipboardData || e.originalEvent.clipboardData; 
    pastedData = clipboardData.getData('Text').replace(/<[^>]*>/g, ""); 
    // How to paste pasteddata now? 
    console.log(pastedData); 
}); 
+0

wie Daten einfügen, wo mit einem Eingang? –

+0

in einem contenteditable div – TSR

+0

übrigens haben Sie eine; zufällig darin –

Antwort

-3

Nun, es hängt davon ab, welches Element werden Sie in einfügen. Sie jQuery oder native Javascript verwenden könnten zu erreichen!

Vielleicht wie $(targetNode).append(pastedData) oder document.getElementById('targetNode').innerText = pastedData

+0

Einfügen kann in vorhandenem Inhalt vorkommen ... dies würde andere Teile dieses Inhalts löschen oder eingefügten Inhalt am Ende platzieren, wo der Benutzer es nicht erwartet – charlietfl

1

fand ich die Antwort, und ich bin es werde Aktie. Um die Zwischenablage von HTML-Tags zu sanieren, sollten Sie diese Paste:

   element.on('paste', function (e) { 
        e.preventDefault(); 
        var text; 
        var clp = (e.originalEvent || e).clipboardData; 
        if (clp === undefined || clp === null) { 
         text = window.clipboardData.getData("text") || ""; 
         if (text !== "") { 
          text = text.replace(/<[^>]*>/g, ""); 
          if (window.getSelection) { 
           var newNode = document.createElement("span"); 
           newNode.innerHTML = text; 
           window.getSelection().getRangeAt(0).insertNode(newNode); 
          } else { 
           document.selection.createRange().pasteHTML(text); 
          } 
         } 
        } else { 
         text = clp.getData('text/plain') || ""; 
         if (text !== "") { 
          text = text.replace(/<[^>]*>/g, ""); 
          document.execCommand('insertText', false, text); 
         } 
        } 
       }); 

Credit: l2aelba

2

könnte einfacher sein, unmittelbar nach der Paste gehen und Update-Element zu lassen. Würde davon abhängen, Anwendungsfall auch als Cursorposition auf diese Weise verloren gehen könnte

$(':input').on('paste', function (e) { 
 
    var $el = $(this); 
 
    setTimeout(function() { 
 
     $el.val(function(){ 
 
      return this.value.replace(/foo/g, "bar"); 
 
     }) 
 
    }); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>foo was here</p> 
 
<textarea></textarea>

Verwandte Themen