2013-05-15 39 views
0

我有一個所見即所得的編輯器,基於JqueryRTE(code.google.com/p/lwrte),其使用iframe作爲主要對象,使得格式化的幾個方法。仍然需要清理粘貼的文本,因爲用戶傾向於從MS Word或Openoffice.org文檔粘貼格式化的文本,並且不支持該格式的最大部分。 我用下面的功能附加「粘貼」事件的iframe的文檔:問題粘貼事件和iframe在Internet Explorer 7

function bindEvent(el, eventName, eventHandler) { 
        if (el.addEventListener) { 
         el.addEventListener(eventName, eventHandler, false); 
        } else if (el.attachEvent){ 
         el.attachEvent('on' + eventName, eventHandler); 
        } 
       } 

,並調用它,如下所示:

bindEvent(iframe.contentWindow.document, 'paste', function() { cleanPastedText(); }); 

只是正常的FF和最新的IE版本,雖然我不能獲得在IE7上調用的事件處理程序。我用調試器研究了bindEvent,它得到了attachEvent的執行。我什至嘗試綁定處理程序的主要形式,但仍然沒有結果。你能指導我,可能的原因是什麼,如果將文本粘貼到輸入或textarea以外的元素,是否有可能使用IE7捕捉「粘貼」事件?是否有可能,該事件實際上在iframe子元素的某個地方被解僱,但是沒有傳播到父節點? IFRAME內部HTML大致如下:

<html><head></head><body>here comes some text and some pasted text and other blahblah</body></html> 

回答

1

我發現,該窗口和文檔對象不會在舊版本的IE(< IE9)的糊狀觸發事件。在怪異模式相應的文章: quirksmode - cut,copy,paste

此外,該事件不會傳播以外的iframe內部文檔,所以,在我的情況,我不得不事件偵聽器分配給<身體>或< HTML IFRAME文檔>元素。由此產生的代碼行:

bindEvent(iframe.contentWindow.document.getElementsByTagName("body")[0], 'paste', function() { cleanPastedText(); }); 

由於後者已完成,它的作用就像一個魅力。希望這個答案對其他SO用戶有用。