问题 在iOS 8.4.1上,Cordova无法打开链接(和点击)


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

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

问题不区分按钮或标签。有些标签看起来效果很好。

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

我也试过禁用用户选择,但是没有修复它。

此问题仅发生在设备上,而不是在模拟器中。

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


5874
2017-08-16 11:22


起源



答案:


另一种方法是像这样设置css属性(它适用于我):

button:active { opacity: 1 !important; }

我无法理解的一些非常愚蠢的东西,但我认为这与Apple发布的内容相关: https://support.apple.com/en-us/HT205030

“影响:恶意网站可以使点击事件产生合成   点击另一页说明:合成方式存在问题   点击是根据可能导致点击定位的点击事件生成的   其他页面。该问题通过限制点击解决   传播。”

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


5
2017-08-18 12:31



+1这个修复对我有用。我更新了fastclick库并没有发生任何事情,但设置按钮的不透明度为1.0 - atc


答案:


另一种方法是像这样设置css属性(它适用于我):

button:active { opacity: 1 !important; }

我无法理解的一些非常愚蠢的东西,但我认为这与Apple发布的内容相关: https://support.apple.com/en-us/HT205030

“影响:恶意网站可以使点击事件产生合成   点击另一页说明:合成方式存在问题   点击是根据可能导致点击定位的点击事件生成的   其他页面。该问题通过限制点击解决   传播。”

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


5
2017-08-18 12:31



+1这个修复对我有用。我更新了fastclick库并没有发生任何事情,但设置按钮的不透明度为1.0 - atc


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

影响:恶意网站可以使点击事件产生合成   点击另一页说明:合成方式存在问题   点击是根据可能导致点击定位的点击事件生成的   其他页面。该问题通过限制点击解决   传播。

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

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

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

4
2017-08-17 11:52



我们发现了同样的事情--- fastclick为我们解决了它。 - mjabraham
我已经在使用fastclick,但仍然有问题。 - Angus Bremner


使用最新版本的FastClick为我工作。


3
2017-08-18 04:18





我能够通过安装fastclick库来解决问题。 FastClick


2
2017-08-17 16:42



还使用FastClick 0.6.11对我们的某个应用程序产生了影响,并使用最新版本的FastClick进行了解决 - Nicolas R


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

我们在iOS 8.4.1和FastClick版本0.6.7中遇到了同样的问题。当我们更新到最新版本的FastClick库时,问题就解决了。不确定它是如何以及为什么有效,但它对我们有用!


1
2017-08-17 15:18





你能尝试重新安装吗? inAppBrowser 插入


0
2017-08-16 17:03





我认为我有同样的问题,虽然我认为它与点击事件有关,而不是特别是链接。我的应用程序没有使用Angular,只是jQuery,一些jQuery插件..

  • 过境
  • hammer.js
  • fastclick
  • 计算器(基思木)
  • 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“Whitelist”
  • 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;
}

0
2017-08-16 21:42



我最终使用fastclick库解析它 github.com/ftlabs/fastclick - mjabraham
我的项目已经使用了fastclick,我仍然遇到了问题。我这样称它为:FastClick.attach(document.body); - Danny Connell


我正面临与cordova 3.5版本的ios项目构建相同的问题 当我将cordova更新到最新版本(5.1.1)并重建项目时,问题得以解决

我不确定这是根本原因,但它对我很好

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


0
2017-08-17 07:12





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


0
2017-08-25 19:41