2011-11-03 1 views
1

iPad의 Safari에 심각한 문제가 있습니다. 새로운 contenteditable 기능은 touchmove 이벤트와 함께 작동하지 않습니다! 코드 :Safari/iOS5/iPad의 touchmove 이벤트가 contenteditable을 사용 중지합니다.

... 
<script> 
function doNothing(event) { return; } 

function initIFrame() { 
    var iframe=document.getElementById("iframeedit"); 
    iframe.contentWindow.document.designMode="on";  
    iframe.contentWindow.document.addEventListener("touchmove", doNothing, true); 
} 
</script> 
</head> 
<body onload="initIFrame()"> 
<iframe style="width:500ppx;height:200px" src="content.html" id="iframeedit"></iframe> 
... 

문서에 어딘가에 편집 가능한 컨텐츠를하는 TouchMove을 추가함으로써이하는 TouchMove (돋보기를 얻기 위해 손가락을 아래로 누름) 한 후 더 이상 편집 할 수 없습니다. 커서를 설정할 수는 있지만 화면상의 키보드 입력은 더 이상 허용되지 않습니다.

테스트 스크립트 (대한 아이 패드 + iOS5를) http://flyingdog.biz/tests/ipad/test2.html

노력하고 또 다른 테스트 스크립트는 다른 스크립트에서 볼 수 있듯이 http://flyingdog.biz/tests/ipad/test1.html

내가 앞에 몇 줄의 텍스트를 넣어 iFrame - 매우 이상합니다! 다른/더 나은 해결 방법을 찾고 있습니까 아니면 내가 잘못 했나요? touchmove 이벤트가 없으면 작동하지만 좋은 편집 경험이 필요합니다.

답변

3

이 버그에 대한 대안을 찾았습니다 : 특히 복사 & 붙여 넣기 메뉴가 나타날 때 iframe 문서가 터치 이벤트 후 포커스를 잃어 버린 것처럼 보입니다. 이 버그는 문서에 초점을 iframe이 문서에를 keyDown 이벤트 처리기를 추가하고 다시 해결하려면 :

var iframeDoc = $(iframe.contentWindow.document); 
iframeDoc.keydown(function(event) { 
    iframe.contentWindow.focus(); 
}); 

이 나를 위해 대부분의 버그를 해결합니다. 사용자가 매우 빠르게 (예 : 연결된 블루투스 키보드에서) 입력하는 경우에만 javascript keydown 처리기 실행이 iPad에서 약간 지연되기 때문에 일부 키 입력이 손실 될 수 있습니다.

+0

하지만 지금은 잘라 내기/복사/붙여 넣기 작업을 수행 할 수 없습니다. –