我需要能夠允許用戶粘貼到可編輯的div(通過用戶選擇的任何內容:右鍵單擊並粘貼,快捷鍵等),但我想放棄格式化,並只採取純文本。只將純文本粘貼到可編輯div
我不能使用textarea,因爲如果由用戶啓動的事件應用,div將允許基本格式(粗體和斜體)。
onbeforepaste事件看起來很有希望,但根據quirksmode的支持是如此有限,以至於無法使用。
tyia的任何建議
我需要能夠允許用戶粘貼到可編輯的div(通過用戶選擇的任何內容:右鍵單擊並粘貼,快捷鍵等),但我想放棄格式化,並只採取純文本。只將純文本粘貼到可編輯div
我不能使用textarea,因爲如果由用戶啓動的事件應用,div將允許基本格式(粗體和斜體)。
onbeforepaste事件看起來很有希望,但根據quirksmode的支持是如此有限,以至於無法使用。
tyia的任何建議
你嘗試的事件,如「貼」或「輸入」?然後你可以使用正則表達式來跳閘所有的HTML標籤
$(document).bind('paste', function(e){ alert('pasting!') })
http://www.hscripts.com/scripts/JavaScript/remove-html-tag.php
有上粘貼事件的討論也應該閱讀:
Catch paste input
這是棘手,但並非不可能。你可以做的事情非常複雜,並且可能會在Firefox 2 +,IE 5.5+和最近的WebKit瀏覽器(例如Safari 4或Chrome)(未在舊版本中測試過)中發揮作用。兩者的TinyMCE和CKEditor的最近版本的使用他們的基於iframe的編輯器這種技術:
請注意,這僅適用於鍵盤粘貼事件,不適用於上下文或編輯菜單中的粘貼。 paste
事件會更好,但在它觸發的時候,將脫字符重定向到textarea(至少在某些瀏覽器中)爲時已晚。
對於Ctrl + v我檢查了keyup上可編輯div的內容。您可以在該事件中修改內容。我正在使用nicedit文本編輯器。 這從右鍵點擊→粘貼不起作用。 對於'貼'我不得不修改內容使用settimeout
。
.addEvent('paste', function(e) {
setTimeout(function(){
if(condition){
//modify content
}
},350);
});
它也可以通過使用javaScript入侵。希望這有助於
我創建了一個例子here
<div contentEditable="true" id="clean-text-div"> </div>
<div id="clean-btn"> Clean Me</div>
<div id="message"> paste html content and clean background HTML for pure text</div>
$("#clean-btn").click(function(){
$("#clean-text-div").text($("#clean-text-div").text());
$("#message").text("Your text is now clean");
});
感謝兩個 - 應該讓我朝着正確的方向努力標記的答案是有用的,但顯然我太新:/ – momo 2010-08-24 11:19:11
可能重複[在execCommand中粘貼爲純文本的JavaScript技巧](https://stackoverflow.com/questions/12027137/javascript-trick-for-paste-as-plain-text-in-execcommand) – user 2017-11-30 22:07:21