4

我試圖在contentEditable div中消毒粘貼。也就是說,代碼看起來應該像下面這樣:在contentEditable div中使用jquery消毒粘貼事件

$('#content').bind('paste',function(e) 
{ 
    // Ensure pasted markup is valid 
}); 

理想情況下,我就可以通過粘貼的文本並重新格式化的方式,適合於現場分析,但我不」不知道該怎麼做。

另外,我會很舒服地粘貼爲純文本(而不是HTML),但我不知道如何做到這一點。

我對使用textarea彈出框的解決方案略微不太舒服,要求用戶粘貼到該文本區域,然後將文本放入前一個光標位置的內容。我知道如何做到這一點,但想避免它。

而我完全不舒服,只是通過使用e.preventDefault()阻止用戶粘貼。

在此先感謝。

+0

可能重複[JavaScript的獲得上粘貼事件(跨瀏覽器)剪貼板數據(http://stackoverflow.com/questions/2176861/javascript-get-clipboard-data-on-paste-event-cross瀏覽器) –

回答

-1

一旦它已經在該領域的一些你怎麼能不驗證內容?讓內容粘貼,首先保存原始內容,如果新內容無效,則將其替換爲舊的內容。這只是一個理論,但我現在只需要嘗試一下。

+1

你可以隨時發佈你的猜測/理論作爲評論下的問題。 – Fallup

2

我已經能夠實現這與rangy JavaScript庫允許我保存和恢復內容消毒後插針位置。

https://github.com/timdown/rangy

測試在Chrome和Safari。

$("#content").on('paste', function(){ 
    sanitize(); 
}); 

function sanitize(){ 
    setTimeout(function(){ 

     var savedSelection = rangy.saveSelection(); 

     $("#content *").removeAttr("style"); // Do your parsing here. 

     rangy.restoreSelection(savedSelection);   

    }, 0); 
} 
+0

但它會閃爍。一會兒,原始的糊狀物就會被看到,直到它被消毒。您可以將文本顏色設置爲「透明」,然後清理,然後刪除該樣式。 – vsync