ios 點擊失效、閃屏問題解決方案


一、點擊失效

描述:將點擊事件(click)委派在document或者body上,且目標元素為默認不可點擊的元素時(非<a>、 <button>而是<span>等),點擊失效。

實例代碼:

<body>
    <div class="page-content">
        <ol class="scence-hot">
            <li data-id="1-1" data-type="1" data-event="J_storeHotBtn"></li>    
        </ol>
    </div>
</body>

// 點擊事件按鈕
$('body').on('click', '[data-event]', function(e) {
  var arr = $(this).data('event').match(/J_(\w+)Btn/);
  var selector = arr[1];

  switch (selector) {
    case 'storeHot':
      $targetElem = $targetElem.parent('li').length ? $targetElem.parent('li') : $targetElem;
      var type = $targetElem.data('type');
      var id = $targetElem.data('id');
      switch (type) {
        case 1:
          self._createDialog('hot-store', '', id);
          break;
        case 2:
          self._createDialog('hot-hb', '', id);
          break;
        case 3:
          self._createDialog('hot-hb-simple', '', id);
          break;
      }

    break;

  }

});

解決辦法有五種:

1、取消事件委派,將事件直接綁定在目標元素本身上;

2、將目標元素更換成默認可點擊的元素,如<a>、<button>;

3、將事件委派在非document或body上;

4、將目標元素增加樣式cursor:pointer;

5、將click事件換成touch事件。

方案3為最佳方案,其他三種的代價相對較大。方案1,不便於代碼的管理、性能等;方案2,區塊的點擊無法實現(語義等方面考慮);方案4,影響展現,會改變原有的交互體驗。方案3幾乎沒有以上幾點缺點。

 

二、點擊閃屏

   ios下閃屏問題,由事件委派引發,解決方案如下:    

    1、去除事件委派;

    2、給委派的元素加上屬性

      -webkit-tap-highlight-color: rgba(0,0,0,0);

      -webkit-user-select: none;

  方案2為最佳方案。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM