Подтвердить что ты не робот

Ссылки (и клики) не открываются с помощью Кордовы на iOS 8.4.1

Последняя версия iOS (8.4.1), похоже, сломала наше приложение ngCordova.

Наши ссылки, как правило, не открываются, независимо от того, были ли они доступны напрямую href, ng-click или ng-href. Некоторые будут открываться после повторного нажатия, и у hrefs есть всплывающее меню, которое позволяет нам выбирать "открыть", "скопировать" или "отменить", если мы нажмем и удержим их на некоторое время.

Проблема не различает кнопку или тег. Некоторые теги, похоже, работают нормально.

Мы были на более старых версиях кордовы и ngcordova, но обновление их не фиксировало этого.

Я также попытался отключить выбор пользователя, но это не исправило его.

Эта проблема возникает только на устройстве, а не в эмуляторе.

Мы используем директиву angular -mobile-ui toggleable для sidemenu, а событие переключения запускается при нажатии ссылок в sidemenu, но ссылка не перенаправляется.

4b9b3361

Ответ 1

Мне удалось решить проблему, установив библиотеку fastclick. FastClick

Ответ 2

Другой способ - установить свойство css как это (он работает для меня):

button:active { opacity: 1 !important; }

Что-то довольно глупое, что я не мог понять, но я думаю, что это связано с Apple в: https://support.apple.com/en-us/HT205030

"Влияние: вредоносный веб-сайт может сделать событие крана, производящего синтетический щелкните на другой странице Описание: Проблема в том, как синтетические клики генерируются из событий крана, которые могут вызвать клики другие страницы. Проблема была решена с помощью ограниченного щелчка Распространение".

Итак, я полагаю, если кнопка в активном состоянии установлена ​​на нижнюю непрозрачность, чем 1, Apple должна учитывать, что это синтетический щелчок.

Ответ 3

У меня такая же проблема. См. Сводный журнал безопасности от Apple здесь https://support.apple.com/en-us/HT205030

Влияние: вредоносный веб-сайт может сделать событие крана, производящего синтетический щелкните на другой странице Описание: Проблема в том, как синтетические клики генерируются из событий крана, которые могут вызвать клики другие страницы. Проблема была решена с помощью ограниченного щелчка Распространение.

Я думаю, что проблема связана с этим изменением.

Что вы можете сделать, это добавить событие touchstart к событиям кликов. Это разрешило мою проблему на данный момент, пока я не найду лучшее решение.

$('button').on('click touchstart', function(){
    // Click event
});

Ответ 4

Использование последней версии FastClick сработало для меня.

Ответ 5

Используете ли вы библиотеку FastClick? Можете ли вы попробовать и обновить до последней версии?

Мы испытываем ту же проблему с iOS 8.4.1 и FastClick версии 0.6.7. Когда мы обновились до последней версии библиотеки FastClick, проблема была решена. Не знаете, как и почему это работает, но это сработало для нас!

Ответ 6

Можете ли вы попробовать переустановить плагин inAppBrowser

Ответ 7

Я думаю, что у меня была такая же проблема, хотя я думаю, что это связано с событиями click, а не с ссылками в частности. Мое приложение не использует Angular, просто jQuery, несколько плагинов jQuery..

  • Transit
  • hammer.js
  • FastClick
  • калькулятор (keith wood)
  • base64
  • плагин

.. и некоторые плагины PhoneGap/Cordova..

  • cc.fovea.cordova.purchase 3.10.1 "Покупка"
  • cordova-plugin-console 1.0.0 "Консоль"
  • cordova-plugin-dialogs 1.0.0 "Уведомление"
  • cordova-plugin-inappbrowser 1.0.0 "InAppBrowser"
  • cordova-plugin-whitelist 1.0.1-dev "Белый список"
  • de.appplant.cordova.plugin.email-composer 0.8.2 "EmailComposer"
  • hu.dpal.phonegap.plugins.PinDialog 0.1.3 "PinDialog"
  • org.apache.cordova.splashscreen 1.0.0 "Splashscreen"
  • uk.co.ilee.touchid 0.2.0 "Touch ID"

У меня есть много кнопок в моем приложении, и только с этим обновлением iOS (8.4.1) я обнаружил, что некоторые из них работали, а некоторые - нет.

например. это разметка для одной из кнопок, которые перестали работать:

<div class="button theme-bg" id="add-budget"><span>Add Budget</span></div>

И это связанный jQuery:

$('#add-budget').on('click', function (e) {
    // do stuff
});

Это отлично работало от iOS 7.0 вплоть до 8.4. Он сломался только на 8.4.1.

В конце концов, я обнаружил, что добавление следующих правил CSS к этой кнопке устраняет проблему:

width: 100%;
float: left;
overflow: hidden;

У меня нет абсолютно никакой идеи, почему это сработало. Было бы здорово, если кто-нибудь сможет объяснить, почему. Я только понял это, посмотрев CSS-правила кнопок, которые все еще работают, и применяя их к сломанным кнопкам.

В любом случае, я надеюсь, что это сработает и для других. Это ужасная проблема с 8.4.1 - тем более, что это обновление должно было только повлиять на Apple Music! Мне пришлось удалить приложение из всех магазинов приложений!

Это полный список правил, применяемых к моим (теперь работающим) кнопкам:

.button {
    height: 50px;
    line-height: 50px;
    text-align: center;
    font-size: 14px;
    font-weight: bold;
    color: #fff;
    display: block;
    -webkit-box-sizing: border-box;
    cursor: pointer;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: -0.07em;
    -webkit-box-shadow: 0px 8px 15px rgba(50, 50, 50, 0.1);
    position: relative;

    /* 3 new rules added to fix the buttons: */
    width: 100%;
    float: left;
    overflow: hidden;
}
.theme-bg {
    background: #F88319;
    -webkit-transition: background 0.7s;
}

Ответ 8

Я столкнулся с той же проблемой с ios project build от кордовы версии 3.5 Проблема была решена, когда я обновил кордову до последней версии (5.1.1) и перестроил проект

Я не уверен, что это первопричина, но он отлично работает со мной.

P/s: Мой проект с использованием угловых и кордовой

Ответ 9

Я могу лично поручиться за Fastlink, фиксирующую эту проблему в нашем приложении, которая работает на Backbone/Marionette. Мы внедрили его, и наши события JavaScript-кликов снова работали по назначению, и не нужно было переходить с одного нажатия на любой сенсорный метод. Я знаю, что это также влияет на раскрывающиеся меню CSS (которых у нашего приложения нет). Может ли кто-нибудь ручаться за упомянутые выше хаки CSS, разрешая проблему?

Ответ 10

Я попробовал все вышеперечисленные решения:

- непрозрачность: 1; = нет влияния
- FastClick = хуже, чем не работает (активирует ссылки, скрытые под подменю CSS)
- Я создал обходное решение с событием touchStart, но это не достойное постоянное решение. Я также собираюсь протестировать короткое решение touchStart выше, но сохранил сайт супер-свет, поэтому даже не пользуюсь JQuery, и ему придется переписать его.
- Fastlink = Я не знаю, где взять этот JS

Мое меню - это простое подменю только для CSS.. нет Javascript вообще. До сих пор, поскольку Apple, очевидно, требует этого! (И люди с выключенным JS больше не могут перемещаться по сайту.)

Но я до сих пор не нашел хорошего решения даже с JS для решения этой глобальной проблемы с веб-сайтом, созданной Apple!

Больше обсуждений по этой теме в этой публикации в сообществе Apple: https://discussions.apple.com/message/28790737

Ответ 11

это сработало для меня:

a, button { opacity:1 !important; }

спасибо arzanardi

Ответ 12

У меня были те же проблемы с Cordava 4.1.2 и iOS 8.4.1, я решаю проблему обновления FastClick

Ответ 13

У меня такая же проблема, как я решил использовать css.I добавить ниже css, и это сработало для меня.

z-index:10000000;