2013-05-15 2 views
0

iframe을 기본 개체로 사용하고 몇 가지 서식 지정 방법을 사용할 수있는 JqueryRTE (code.google.com/p/lwrte)를 기반으로하는 WYSIWYG 편집기가 있습니다. . 사용자가 MS Word 또는 Openoffice.org 문서의 서식있는 텍스트를 붙여 넣는 경향이 있기 때문에 붙여 넣기 된 텍스트를 살균해야합니다. 서식의 가장 큰 부분은 지원되지 않습니다. 다음과 같이붙여 넣기 이벤트 및 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); 
        } 
       } 

그리고 전화 : 내가 문서를하면 iframe '붙여 넣기'이벤트를 연결하려면 다음 함수를 사용

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

그것은, FF 및 최신 IE 버전에서 잘 작동하는 동안 나는 할 수 없습니다 IE7에서 호출되는 이벤트 핸들러를 가져옵니다. 나는 bindEvent를 디버거로 연구했다. attachEvent가 실행된다. 나는 심지어 주요 폼에 바인딩 처리기를 시도했지만 결과는 아직 없습니다. 가능한 이유는 무엇이며, 입력 또는 텍스트 영역 이외의 요소에 텍스트를 붙이면 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 사용자에게 유용 할 것입니다.