2013-06-26 4 views
0

내 머리를 긁적니다. a) 팝업 메뉴를 사용하여 사용자가 메뉴, 즉 메뉴 등과 상호 작용할 수 있고 외부에서 클릭/터치 (iPad 등)를 닫으려는 경우. "e.preventDefault();를 삽입하면 문제가 발생합니다. 팝업과 그 부모의 뒤에 링크를 중지하려면 iPad에서 작동하지만 팝업의 내용은 바탕 화면 브라우저에서 잘 작동합니다 ....e.preventDefault(); iPad에서 작동하지 않습니다.

아무도 아이디어가 있습니까?!

<div id="divQuickCartDialogOverlay"> 
    <div id="divQuickCartDialog"> 
     <div id="overlayQuickBasket"><!--SELECT MENUS, BUTTONS ETC HERE --></div> 
    </div> 
</div> 

<script language="javascript" type="text/javascript"> 
     $(document).ready(function() 
     { 
      // Initial call 
      setTimeout(basketExpiryCheck, 60000); 

      // old style quick basket 
      $('#divQuickCart').mouseleave(function() { 
       closeCart('mleave'); 
      }); 

      // hide cart dialog if user clicks on background div 
      $(document).on('click touchstart', function (e) 

      { 
       e.preventDefault(); 

       var container = $("#divQuickCartDialog"); 
       if (container.has(e.target).length === 0) 
       { 
        closeCartDialog(); 
       } 
      }); 

      checkBasketRefresh(); 
     }); 

    </script> 


<style> 
#overlayQuickBasket { margin:0 auto; } 
body, html { height:100%; } 
#divQuickCartDialog { height:100%;width:100%; } 
</style> 

<script> 
$(function() { 
    $('#overlayQuickBasket').each(function() { 

     $(this).parent().css('position', 'relative'); 
     $(this).css('position', 'absolute'); 
     $(this).css('top', '50%'); 
     $(this).css('left', '0px'); 
    }); 
    $(window).resize(function() { 

     var thisheight = Math.round(parseInt($('#overlayQuickBasket').outerHeight())/2); 
     $('#overlayQuickBasket').css('margin-top', '-' + thisheight + 'px'); 

     if(parseInt($('#overlayQuickBasket').outerHeight()) > parseInt($('#overlayQuickBasket').parent().outerHeight())) { 

      $('#overlayQuickBasket').parent().outerHeight($('#overlayQuickBasket').outerHeight()); 
     } 
    }).trigger('resize'); 
}); 
</script> 
+0

시도'return false' – anmarti

+0

IPad는 "hover"대신 "tap"이라는 자체 기능을 가지고 있으므로 외부 클릭을 인식하지 못합니다. 다른 hover 요소를 탭하면 작동합니다. 나는 주변에서 어떤 일도 발견하지 못했다. – Rajiv007

+0

returnfalse; 같은 문제 그것을 참조 touchstart 내가있어 Rajiv007 @ 이 모든 내용, 즉 사용하지 , 나뿐만 아니라 – mehgc

답변

0

대신 그것을 시도 할 수 : 그럼 대체

#divQuickCartDialog { 
    outline:0; 
    height:100%; 
    width:100%; 
} 

: 단지 스타일

<div id="divQuickCartDialog" tabindex="-1"> 
    ... 
</div> 

CSS outline 0으로 설정 :

세트

이 사업부 #divQuickCartDialog에 대한의 tabindex 속성 귀하의 문서 clicktouchstart로 핸들러 : #divQuickCartDialog이 열릴 때

$("#divQuickCartDialog").on('blur', function(){ 
    closeCartDialog(); 
}); 

, 당신은 거기에 focus을 설정해야합니다.

+0

$ ("# divQuickCartDialog").에 팝업을 닫으면 ('터치 클릭'등있어 원인 함수 (E) { VAR 용기 = $ ("# divQuickCartDialog"); 경우 (container.has (e.target) .length === 0) { closeCartDialog(); false를 반환} ; }}); ('blur')이 작동하지 않아 솔루션을 수정할 수 없습니다 (탭 색인 또는 개요는 필요하지 않음). 데스크탑과 iPad 모두에서 꿈처럼 작동합니다. 솔루션에 대한 대부분의 이점을 얻으려고 엄지 손가락을 꽂았습니다. – mehgc

관련 문제