2013-06-26 50 views
0

在這個問題上撓頭。有一個彈出窗口,允許用戶與它進行交互,即菜單等,如果他們想關閉點擊/觸摸(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

嘗試'返回false' – anmarti

+0

IPad有自己的「tap」功能來代替「懸停」,所以它無法識別外部點擊。它會工作,如果你ü點擊另一個懸停元素。我沒有找到任何工作。 – Rajiv007

+0

returnfalse;導致同樣的問題 @ Rajiv007我有touchstart引用 它也禁止所有內容即等一旦我關閉彈出窗口以及 – mehgc

回答

0

你可以嘗試,而不是:

集屬性的tabIndex爲格#divQuickCartDialog:只是風格

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

CSS,設置outline 0:

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

然後更換你的文件clicktouchstart處理方式:

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

#divQuickCartDialog被打開,你必須設置就可以了focus

+0

$(「#divQuickCartDialog」)上(「點擊觸摸」 ,函數(E) { 變種容器= $( 「#divQuickCartDialog」);如果 (container.has(e.target)。長度=== 0) { closeCartDialog();} 返回false ; }); on('blur')不能正常工作,因此修改了您的解決方案(tab-index或outline不是必需的)。像臺式機和iPad上的夢想一樣工作..儘管如此,大拇指讓我獲得解決方案的大部分途徑 – mehgc