代码之家  ›  专栏  ›  技术社区  ›  GeneralBear

链接(和点击)无法在iOS 8.4.1上使用Cordova打开

  •  11
  • GeneralBear  · 技术社区  · 11 年前

    最新的iOS版本(8.4.1)似乎破坏了我们的ngCordova应用程序。

    我们的链接通常不会打开,无论是通过href直接访问、ng-click还是ng-href访问。有些会在重复单击后打开,而hrefs有一个弹出菜单,如果我们单击并按住它们一段时间,它允许我们选择“打开”、“复制”或“取消”。

    这个问题无法区分按钮和标签。一些a标签似乎工作得很好。

    我们使用的是旧版本的cordova和ngcordova,但更新它们并没有解决这个问题。

    我也尝试过禁用用户选择,但这并没有解决问题。

    这个问题只发生在设备上,而不是模拟器中。

    我们使用可切换侧菜单的angular mobile ui指令,当单击侧菜单中的链接时触发切换事件,但链接不会重定向。

    13 回复  |  直到 11 年前
        1
  •  5
  •   Frederik Struck-Schøning    10 年前

    另一种方法是像这样设置css属性(这对我很有用):

    button:active { opacity: 1 !important; }
    

    有些事情很愚蠢,我无法理解,但我认为这与苹果发布在: https://support.apple.com/en-us/HT205030

    “影响:恶意网站可以使点击事件产生合成 单击另一页描述:合成方法存在问题 点击是由可能导致点击目标的点击事件生成的 其他页面。该问题通过受限点击解决 传播。”

    所以我想,如果活动状态下的按钮设置为低于1的不透明度,苹果应该认为这是一次合成点击。

        2
  •  4
  •   Angus Bremner    11 年前

    我也有同样的问题。请在此处查看Apple的安全更改日志 https://support.apple.com/en-us/HT205030

    影响:恶意网站可以使点击事件产生合成 单击另一页描述:合成方法存在问题 点击是由可能导致点击目标的点击事件生成的 其他页面。该问题通过受限点击解决 传播

    我认为问题源于这种变化。

    您可以做的是将touchstart事件添加到单击事件中。这暂时解决了我的问题,直到我找到更好的解决方案。

    $('button').on('click touchstart', function(){
        // Click event
    });
    
        3
  •  3
  •   Ched Cheatham    11 年前

    使用最新版本的FastClick对我有用。

        4
  •  2
  •   GeneralBear    11 年前

    我通过安装fastclick库解决了这个问题。 FastClick

        5
  •  1
  •   user2491390    11 年前

    您正在使用FastClick库吗?你能尝试更新到最新版本吗?

    我们在iOS 8.4.1和FastClick版本0.6.7中遇到了同样的问题。当我们更新到FastClick库的最新版本时,问题得到了解决。不知道它是如何工作的,为什么工作,但它对我们有用!

        6
  •  0
  •   Ranjith Varma    11 年前

    你能尝试重新安装 inAppBrowser 插件

        7
  •  0
  •   Danny Connell    11 年前

    我认为我也有同样的问题,尽管我认为这与点击事件有关,而不是链接。我的应用程序没有使用Angular,只有jQuery,一些jQuery插件。。

    • 运输
    • 锤击器js
    • 快速点击
    • 计算器(基思·伍德)
    • 基础64
    • 插件

    ..和一些PhoneGap/Cordova插件。。

    • cc.fovea.cordova公司。采购3.10.1“采购”
    • cordova插件控制台1.0.0“控制台”
    • cordova插件对话框1.0.0“通知”
    • cordova插件inappbrowser 1.0.0“inappbrowser”
    • cordova插件白名单1.0.1-dev“白名单”
    • de.appplant.cordova.插件。电子邮件编写器0.8.2“EmailComposer”
    • hu.dpal.phonegap.plugins。PinDialog 0.1.3“PinDialog”
    • 厚皮大肠杆菌。splashscreen 1.0.0“splashscreen”
    • uk.co.ilee。touchid 0.2.0“触摸ID”

    我的应用程序上有许多按钮,并且通过此iOS更新 只有 (8.4.1),我发现其中一些有效,有些无效。

    E、 g.这是其中一个停止工作的按钮的标记:

    <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
  •  0
  •   Kien Trinh Trung    11 年前

    我在cordova 3.5版的ios项目构建中也面临同样的问题 当我将cordova更新到最新版本(5.1.1)并重建项目时,问题得到了解决

    我不确定这是根本原因,但我觉得很好

    P/s:使用angularjs和cordova的我的项目

        9
  •  0
  •   jperry    10 年前

    我个人可以担保Fastlink在我们的Backbone/Marinette应用程序上解决了这个问题。我们实现了它,我们的JavaScript单击事件再次按预期工作,无需从单击更改为任何触摸方法。我知道这也会影响CSS下拉菜单(我们的应用程序没有)。有人能保证上面提到的CSS黑客解决了这个问题吗?

        10
  •  0
  •   RickSF    10 年前

    我尝试了以上所有解决方案:

    -不透明度:1;=无影响
    -FastClick=比不工作更糟糕(激活隐藏在CSS子菜单下的链接)
    -我用touchStart事件创建了一个不稳定的解决方案,但这不是一个像样的永久解决方案。我也将测试上面的shorttouchStart解决方案,但我保持了站点的超轻,所以我甚至没有使用JQuery,因此必须重新编写。
    -Fastlink=我不知道从哪里得到这个JS

    我的菜单是一个简单的CSS子菜单,完全没有Javascript。直到现在,因为苹果显然需要它!(关闭JS的用户无法再浏览网站。)

    但我仍然没有找到一个好的解决方案,即使是使用JS来解决这个苹果制造的全球网站破坏问题!

    在苹果社区的这篇帖子中,关于这个话题的更多讨论: https://discussions.apple.com/message/28790737

        11
  •  0
  •   Bolko    10 年前

    这对我有用:

    a, button { opacity:1 !important; }
    

    THX arzanardi公司

        12
  •  0
  •   riccio82    10 年前

    我在Cordava 4.1.2和iOS 8.4.1中遇到了同样的问题,我解决了更新FastClick的问题

        13
  •  0
  •   Mayur    10 年前

    我用css解决了同样的问题。我在下面添加了css,这对我很有用。

    z-index:10000000;