2014-06-25 17 views
6

Yalnızca düz metin kabul eden HTML5 içerik okunabilir div oluşturmaya çalışıyorum.HTML5 contenteditable div yalnızca düz metinleri kabul eder

HTML

<div contenteditable="true"></div> 

jQuery

(function() { 
    $('[contenteditable]').on('paste', function (e) { 
    e.preventDefault(); 
    var text = null; 
    text = (e.originalEvent || e).clipboardData.getData('text/plain') || prompt('Paste Your Text Here'); 
    document.execCommand("insertText", false, text); 
    }); 
}); 

Ama tüm tarayıcılar için çalışmıyor: Aşağıda html ve jQuery kullanıyorum. getData Internet Explorer tarayıcısında desteklenmiyor. Stackoverflow'ta çok fazla çözüm denedim, ama hiçbiri benim için işe yaramadı.

Ben de
(function() { 
    $('[contenteditable]').on('paste', function (e) { 
    e.preventDefault(); 
    var text = null; 

    if (window.clipboardData && clipboardData.setData) { 
     text = window.clipboardData.getData('text'); 
    } else { 
     text = (e.originalEvent || e).clipboardData.getData('text/plain') || prompt('Paste Your Text Here'); 
    } 
    document.execCommand("insertText", false, text); 
    }); 
}); 

çalıştı Ama bu durumda document.execCommand("insertText", false, text); yılında IE için çalışmıyor.

HTML etiketlerine filtre uygulandıktan sonra verileri kabul etmenin herhangi bir yolu var mı? Böylece, herkes düzenlenebilir div içindeki verileri türüne, yapıştırmasına, bırakmasına veya başka bir şekilde girmesine izin verir. Metin olarak göstermelidir.

+0

Görünüş: '$ ('

Merhaba, ben \' m HTML

') .text();'. Bu size "Merhaba, ben HTML" vermeli. –

+0

Sanırım bahsettiğin farklı şey bu. Bizim durumumuzda, yapıştırılmış içeriği almak zorundayız. Düz metne dönüştürün ve div dilinde görüntüleyin. – Tarun

+1

Benim yorumum "düz metne dönüştür" bölümünü kapsar. Yapmaya çalıştığınız şey için JavaScript API ile çalışma deneyimim yok, ancak soruyu okuduğumda, sorun yaşadığınız şeyi anlamakta zorlanıyorum. Örneğin, "_now_ IE için çalışıyor", "_not_ IE için çalışıyor mu?" –

cevap

5

jQuery'nin büyük bir hayranı olmadığından, çözümüm hiçbir faydası olmayacaktır. Neyse işte (yine saf javascript olarak, çalışması gerekir) gider:

function convertToPlaintext() { 
 
    var textContent = this.textContent; 
 
    this.innerHTML = ""; 
 
    this.textContent = textContent; 
 
} 
 

 
var contentEditableNodes = document.querySelectorAll('[contenteditable]'); 
 

 
[].forEach.call(contentEditableNodes, function(div) { 
 
    div.addEventListener("input", convertToPlaintext, false); 
 
});

İlgili konular