2013-05-09 3 views
2

CKEditor 4 용으로 개발중인 플러그인의 paste 이벤트의 clipboardData 속성을 읽으려고합니다.CKEDITOR의 Paste 이벤트 내에서 사용할 수있는 클립 보드 API는 얼마입니까?

Chrome에서 붙여 넣기를 위해 문서 객체를 들었을 때 이벤트가 발생하면 핸들러에서 전달 된 이벤트 객체에는 clipboardData 특성이 포함됩니다. 파이어 폭스 (v20)가 그렇지 않다는 사실에 놀랐다.

이것은 CKEditor에만 관련된 질문이라고 생각하지 않지만 내 CKEditor 플러그인에서 사용하는 코드입니다. 크롬에서는 clipboardData 객체를 볼 수 있습니다. Firefox에서는 그렇지 않습니다.

editor.document.on('paste', function(event) { 
    var clipboardData = event.data.$.clipboardData; 
    if (clipboardData) { 
    console.log(clipboardData); 
    } 
}); 

아직 지원되고 나는 또한 IE10은이 기능을 지원하기위한 것입니다 있다고 생각,이 경우 확인하는 MDN 사이트에서 아무것도 볼 수 있지만, 표준 API에서 작동합니다?

편집 :

나는 처음부터이 분명했다 뻔했지만 나는 이미지를 붙여 넣기에 대한 지원을 개발하기 위해 노력하고있어, 그래서 파일로 클립 보드 데이터를 읽을 필요가있다.

+0

일부 지원 (약간 날짜가 있음) : http://www.quirksmode.org/dom/events/cutcopypaste.html. 표준 API는 http://dev.w3.org/2006/webapi/clipops/입니다 (아직 초안). 기꺼이 코드 다이빙을 할 수 있다면 Modernizr의 클립 보드 API 지원 감지에 대한 Github의 토론을 살펴보십시오 https://github.com/Modernizr/Modernizr/pull/659 – thefrontender

+0

힌트 : ['contentDom' 이벤트 ] (http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-contentDom), 청취자를 올바르게 추가하지 않았기 때문에 (또는 적어도 최적이 아닌 경우). – Reinmar

+0

@Reinmar - 나는 contentDom 이벤트 내에서 그 스 니펫을 사용하고 있습니다. 이 문제는 CKEditor에 관한 것이 아닙니다. –

답변

3

는,이 당신을 도울 수 : 그래서 당신은 수치 리스너의 우선 순위를 지정하여 다른 단계에서 변경 사항을 "주입"할 수 있습니다) :

event.clipboardData.getData(type) 

대개 "text/plain"인 event.clipboardData.types 유형을 가져올 수 없습니다. http://www.w3.org/TR/clipboard-apis/

IE : http://msdn.microsoft.com/en-us/library/ie/ms536436%28v=vs.85%29.aspx

파이어 폭스 :

window.clipboardData.getData(type) 

유형은 "텍스트"또는 "URL"이 될 수

는 ff.If 당신을 클립 보드에 액세스 할 API가 없다 그것을 실현하기를 원한다면, 당신은 당신이하고 싶은 것에 따라 다른 방법으로 시도 할 수 있습니다.

1

사실 그것은 CKEditor 전용 질문입니다. 문제는 기본 Javascript 이벤트를 읽는 것입니다. 하지만 CKEditor 개발자가 당신을 위해 만든 CKEditor 레이어가 누락되었습니다.

그들은 이미 브라우저 간의 차이점을 처리했습니다. 그리고 당신이 필요로하는 유일한 것은해야 할 일 : 크롬과 파이어 폭스에서만 사용할 수 있지만 불이 event.So 사용자를 붙여 곳

var clipboardData = ev.data.dataValue 
+0

CKEditor에 clipboardData 객체에 대한 지원이 포함되어 있지 않으므로 Chrome에서 이미지 데이터를 읽을 수 없기 때문에이 방법은 도움이되지 않습니다. 그래서 나는 기본 이벤트에 곧장 가고 싶다. –

0

IE에서, 우리는 모든 클립 보드 API를 사용 할 수없는 사용자의 클립 보드 API에 당신은 paste 이벤트에 클립 보드 데이터를 재생해야이 사무실에서 사용, MSN ..

1

동안 웹 사이트에서 뭔가를 복사

editor.on('paste', function(event) { 
    console.log(event.data.dataValue); 
}); 

당신은 붙여 넣은 내용을 조작 할 수 event.data.dataValue을 수정할 수 있습니다. 또한 붙여 넣은 데이터가 pre-processed during pasting phases이므로 우선 순위가 중요합니다. (크롬

W3C의 표준 : 당신이 붙여 넣기 이벤트에 클립 보드 데이터를 얻고 싶은 경우에

editor.on('paste', function(event) { 
    console.log(event.data.dataValue); 
}, null, null, priority); 
+0

감사합니다. 붙여 넣기 메서드가 필요한 클립 보드 데이터를 가져올 수 없기 때문에 CKEditor에이 질문을 관련 시켜서는 안됩니다. 질문을 수정하겠습니다. –