2012-06-15 38 views
2

我在這裏看到很多答案在計算器解釋我們如何可以通過監聽的keydown事件和重定向焦點位於屏幕外一個文本刪除文本粘貼的格式。這個解決方案很好,但不要使用上下文菜單或瀏覽器菜單解決粘貼問題。Google plus如何在contenteditable div上實現Javascript明文「粘貼」?

谷歌加確實使用CONTENTEDITABLE DIV作爲一個編輯器,用戶的帖子,並且貼有確實,即使在上下文菜單中正常工作。有沒有人知道他們如何取得這樣的好成績?

回答

1

我做了一些測試,我想我是能夠重現行爲。我只使用Google Chrome和Firefox測試了此解決方案,因此它在許多瀏覽器中可能會遇到問題。我懷疑Google Plus在無法使用此技術時會優雅地降低用戶體驗。

要實現此功能,我貼事件中重定向將焦點轉移到屏幕之外的股利。該div收到粘貼內容,並在超時後,我得到的文本div(使用jquery刪除html標籤)。示例代碼:

var object = this;  
this.$editable.on("paste", function(evt) { 
    object.saveCursorPosition(); 
    var textarea= $("<div contenteditable></div>"); 
    textarea.css("position", "absolute").css("left", "-1000px").css("top", object.$editable.offset().top + "px").attr("id","pasteHelper").appendTo("body"); 
    textarea.html('<BR>'); 
    textarea.focus(); 

    setTimeout(function() { 
     object.$editable.focus(); 
     object.restoreCursorPosition(); 
     object.insertTextAtCursor(textarea.text()); 
     textarea.remove(); 
    }, 0); 


}); 
相關問題