最新的iOS版本(8.4.1)似乎打破了我们的ngCordova应用程序。
我们的链接通常不会打开,无论是通过href直接访问,ng-click还是ng-href。有些将在重复点击后打开,并且hrefs有一个弹出菜单,允许我们选择“打开”,“复制”或“取消”,如果我们点击并按住它们一段时间。
问题不区分按钮或标签。有些标签看起来效果很好。
我们使用旧版本的cordova和ngcordova,但更新它们并没有解决这个问题。
我也试过禁用用户选择,但是没有修复它。
此问题仅发生在设备上,而不是在模拟器中。
我们使用angular-mobile-ui指令可以为sidemenu切换,并且当单击sidemenu中的链接时触发切换事件,但链接不会重定向。
另一种方法是像这样设置css属性(它适用于我):
button:active { opacity: 1 !important; }
我无法理解的一些非常愚蠢的东西,但我认为这与Apple发布的内容相关:
https://support.apple.com/en-us/HT205030
“影响:恶意网站可以使点击事件产生合成
点击另一页说明:合成方式存在问题
点击是根据可能导致点击定位的点击事件生成的
其他页面。该问题通过限制点击解决
传播。”
所以我想如果活动状态下的按钮设置为低于1的不透明度,Apple应该认为这是一个合成点击。
另一种方法是像这样设置css属性(它适用于我):
button:active { opacity: 1 !important; }
我无法理解的一些非常愚蠢的东西,但我认为这与Apple发布的内容相关:
https://support.apple.com/en-us/HT205030
“影响:恶意网站可以使点击事件产生合成
点击另一页说明:合成方式存在问题
点击是根据可能导致点击定位的点击事件生成的
其他页面。该问题通过限制点击解决
传播。”
所以我想如果活动状态下的按钮设置为低于1的不透明度,Apple应该认为这是一个合成点击。
我有同样的问题。请在此处查看Apple的安全更改日志 https://support.apple.com/en-us/HT205030
影响:恶意网站可以使点击事件产生合成
点击另一页说明:合成方式存在问题
点击是根据可能导致点击定位的点击事件生成的
其他页面。该问题通过限制点击解决
传播。
我认为问题源于这种变化。
您可以做的是将touchstart事件添加到您的点击事件中。这一直解决了我的问题,直到找到更好的解决方案。
$('button').on('click touchstart', function(){
// Click event
});
我能够通过安装fastclick库来解决问题。
FastClick
您使用的是FastClick库吗?你能尝试更新到最新版本吗?
我们在iOS 8.4.1和FastClick版本0.6.7中遇到了同样的问题。当我们更新到最新版本的FastClick库时,问题就解决了。不确定它是如何以及为什么有效,但它对我们有用!
你能尝试重新安装吗? inAppBrowser 插入
我认为我有同样的问题,虽然我认为它与点击事件有关,而不是特别是链接。我的应用程序没有使用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;
}
我正面临与cordova 3.5版本的ios项目构建相同的问题
当我将cordova更新到最新版本(5.1.1)并重建项目时,问题得以解决
我不确定这是根本原因,但它对我很好
P / s:我的项目使用angularjs和cordova
我个人可以保证Fastlink在我们的Backbone / Marionette上运行的应用程序上解决这个问题。我们实现了它,我们的JavaScript点击事件再次按预期工作,并且无需从点击更改为任何触摸方法。我知道这也影响了CSS下拉菜单(我们的应用程序没有)。任何人都可以担保上面提到的CSS黑客解决问题吗?