2015-09-22 2 views
0

В приведенном ниже скрипте вы найдете как событие «click», так и «touchstart» ниже. Орионно это было событие «щелчка», пока мы не обнаружили, что iPhone и iPad не работают, потому что для работы требуется «touchstart».on ("click", foo) и on ("touchstart", foo), вызывающие странные проблемы в Android против iPhone.

Итак, я включил оба из них, чтобы он работал на iPhone/iPad.

Затем я столкнулся с проблемой Android, где срабатывают оба «клика» и «touchstart», что приводит к 2-кратным исполнению.

Итак, что является рекомендуемым обходным решением для этих проблем как для iPhone, так и для Android?

//Saved Vehicle - Button... 
    $(document).on('click touchstart', 'div[id^=RecordViewSheet]', function() { 
     var dataVin = $(this).attr("data-vin"); 
     var dataStockNumber = $(this).attr("data-stock-number"); 

     ftnThrobblerAnimationBegin3().done(function() { 
      httpFormSubmissionPostMethod("InspectionSheet.cshtml", "formStockNumber=" + dataStockNumber + "&formVin=" + dataVin); 

      ftnThrobblerAnimationEnd3(); 
     }); 
    }); 
+1

вам не нужно событие touchstart. вы можете использовать css «cursor: pointer» на элементе, который хотите щелкнуть, и он будет работать. Это известная ошибка – gulty

+0

Мне нравится эта идея. – fletchsod

ответ

0

Как мы решать аналогичные проблемы в нашем проекте был как этот

function isMobile(){ 
    if(typeof window.orientation !== 'undefined') return true; 
    return false; 
} 

var EVENT_CONFIG = { 
    CLICK: isMobile()?'touchstart':'click' 
} 

и в вашем назначении событий

$(document).on(EVENT_CONFIG.CLICK, 'div[id^=RecordViewSheet]', function() { 

Объяснение на функции isMobile.

Настольные браузеры не поддерживают orientation, так что мы обнаруживаем, является ли текущий браузер настольным или мобильным.

Если window.orientation является undefined, то это браузер рабочего стола и не поддерживает события касания.

Если нет, используйте только события касания. Вы определяете, что в EVENT_CONFIG

+0

Извините, но ориентация - очень устаревший способ определить, какие устройства используют люди. В настоящее время существует несколько проблем с этим. Скорее используйте matchMedia, чтобы проверить размеры экрана. Или/И могут быть учтены userAgents. Комбинация, вероятно, даст лучший результат для разных устройств. В этом случае достаточно нажать «click». Это просто ошибка iOS, что она не работает, если вы не установите курсор css: свойство указателя – gulty