Select 下拉菜单无法在 Safari 浏览器中的 iPhone iOS 版本 14.6 上运行
Select Dropdown is not working on iPhone iOS version 14.6 in Safari Browser
我正在使用非常基本的 HTML 创建 select 下拉菜单。喜欢
<select>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
</select>
但是当我 运行 我的站点在 iPhone 上使用 14.6 版本时。我无法设置或更改下拉列表的值。有什么已知问题吗?
更多详细信息:我正在使用 angular 1.x、boostrap、ASP Dot Net。
编辑(2021 年 8 月 13 日)
这是 Apple 对错误报告的回应。
Engineering has provided the following information regarding this issue:
Please know that this is fixed in iOS 15, as we changed the UI for <select> elements.
iOS 15 beta 5 (19A5318f)
https://developer.apple.com/download/
For a complete list of logging instructions visit:
https://developer.apple.com/bug-reporting/profiles-and-logs/
我已经在 Xcode 模拟器中测试了 iOS 15 Beta,这不是问题。因此,在 iOS 的下一个版本中,这有望为遇到问题的任何其他人解决。
原答案
这似乎是最新 iOS 版本的一个问题。
我会向 Apple 提交一个错误并根据我从他们那里听到的内容更新此答案。
我们的 Angular 1.x 应用程序在 14.6 发布之前一直运行良好,然后 iPhones 在 Chrome 和 Safari(Android 似乎不受影响,台式机也可以正常工作。据我们所知,这只是 iOS) 的问题。当用户从下拉列表中选择一个输入然后按“完成”时,它有时只会更新选择。大多数时候,旧选项保持选中状态,但偶尔会更新为新选项。使用 up/down 箭头似乎只稍微好一点,但有时仍然只保留选择。
我可以使用下面的简单示例重现该问题。
测试表明 运行 Angular 1.x 和 iOS 14.5 或 14.6 上的某些其他依赖项会导致问题。
Angular 1.x 本身不会造成问题。
到目前为止导致问题的已知依赖项:
温泉 UI 版本 1.3.17。 (版本 2.11.2 似乎工作正常)。
<!doctype html>
<html ng-app="myApp">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script src="https://unpkg.com/onsenui@1.3.17/js/onsenui.min.js"></script>
</head>
<body>
<div ng-controller="BasicCtrl">
<select>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
</select>
<select ng-model="selectedOpt" ng-options="opt as opt.name for opt in opts">
</select>
<div>{{'{name: ' + selectedOpt.name + ', id: ' + selectedOpt.id + '}'}}</div>
</div>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.config(function() {});
app.controller('BasicCtrl', function ($scope) {
$scope.opts = [
{id: 1, name: "A"},
{id: 2, name: "B"},
{id: 3, name: "C"},
{id: 4, name: "D"},
{id: 5, name: "E"},
{id: 6, name: "F"}
];
});
</script>
</body>
</html>
系统规格:
macOS Big Sur 版本 11.4
机型名称:MacBook Pro
型号标识符:MacBookPro13,3
处理器名称:四核英特尔酷睿 i7
处理器速度:2.6 GHz
处理器数量:1
核心总数:4
L2 缓存(每核心):256 KB
三级缓存:6MB
超线程技术:启用
内存:16GB
XCode模拟器:
版本 12.5 (961.1)
SimulatorKit 609
核心模拟器 757.5
iPhone 12 专业最大
iOS14.5
在我的 index.aspx 页面中,我使用了 fastclick.min.js 以及 document.ready 块中的代码行。
var attachFastClick = Origami.fastclick;
attachFastClick(document.body);
所以基本上我所做的是,从上到下追踪索引文件中的脚本代码,这可能是导致此下拉列表问题的原因。因此注释掉可能导致问题的代码行,然后在 iOS 14.6 设备上针对 safari 浏览器进行测试。
一旦我注释掉与快速点击相关的代码并检查 iphone iOS
14.6 开始工作。
我不确定为什么在 iPhone iOS 14.6 safari 浏览器上使用 fastclick.js include 时下拉菜单不起作用。
我遇到了类似的问题。
这个问题是 angular-material
告诉 AngularJS Material 手势模块跳过(或忽略)移动设备上的点击劫持。
$mdGestureProvider.skipClickHijack();
我正在使用非常基本的 HTML 创建 select 下拉菜单。喜欢
<select>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
</select>
但是当我 运行 我的站点在 iPhone 上使用 14.6 版本时。我无法设置或更改下拉列表的值。有什么已知问题吗? 更多详细信息:我正在使用 angular 1.x、boostrap、ASP Dot Net。
编辑(2021 年 8 月 13 日)
这是 Apple 对错误报告的回应。
Engineering has provided the following information regarding this issue:
Please know that this is fixed in iOS 15, as we changed the UI for <select> elements.
iOS 15 beta 5 (19A5318f) https://developer.apple.com/download/
For a complete list of logging instructions visit: https://developer.apple.com/bug-reporting/profiles-and-logs/
我已经在 Xcode 模拟器中测试了 iOS 15 Beta,这不是问题。因此,在 iOS 的下一个版本中,这有望为遇到问题的任何其他人解决。
原答案
这似乎是最新 iOS 版本的一个问题。
我会向 Apple 提交一个错误并根据我从他们那里听到的内容更新此答案。
我们的 Angular 1.x 应用程序在 14.6 发布之前一直运行良好,然后 iPhones 在 Chrome 和 Safari(Android 似乎不受影响,台式机也可以正常工作。据我们所知,这只是 iOS) 的问题。当用户从下拉列表中选择一个输入然后按“完成”时,它有时只会更新选择。大多数时候,旧选项保持选中状态,但偶尔会更新为新选项。使用 up/down 箭头似乎只稍微好一点,但有时仍然只保留选择。
我可以使用下面的简单示例重现该问题。 测试表明 运行 Angular 1.x 和 iOS 14.5 或 14.6 上的某些其他依赖项会导致问题。 Angular 1.x 本身不会造成问题。
到目前为止导致问题的已知依赖项:
温泉 UI 版本 1.3.17。 (版本 2.11.2 似乎工作正常)。
<!doctype html>
<html ng-app="myApp">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script src="https://unpkg.com/onsenui@1.3.17/js/onsenui.min.js"></script>
</head>
<body>
<div ng-controller="BasicCtrl">
<select>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
</select>
<select ng-model="selectedOpt" ng-options="opt as opt.name for opt in opts">
</select>
<div>{{'{name: ' + selectedOpt.name + ', id: ' + selectedOpt.id + '}'}}</div>
</div>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.config(function() {});
app.controller('BasicCtrl', function ($scope) {
$scope.opts = [
{id: 1, name: "A"},
{id: 2, name: "B"},
{id: 3, name: "C"},
{id: 4, name: "D"},
{id: 5, name: "E"},
{id: 6, name: "F"}
];
});
</script>
</body>
</html>
系统规格: macOS Big Sur 版本 11.4
机型名称:MacBook Pro
型号标识符:MacBookPro13,3
处理器名称:四核英特尔酷睿 i7
处理器速度:2.6 GHz
处理器数量:1
核心总数:4
L2 缓存(每核心):256 KB
三级缓存:6MB
超线程技术:启用
内存:16GB
XCode模拟器:
版本 12.5 (961.1)
SimulatorKit 609
核心模拟器 757.5
iPhone 12 专业最大
iOS14.5
在我的 index.aspx 页面中,我使用了 fastclick.min.js 以及 document.ready 块中的代码行。
var attachFastClick = Origami.fastclick;
attachFastClick(document.body);
所以基本上我所做的是,从上到下追踪索引文件中的脚本代码,这可能是导致此下拉列表问题的原因。因此注释掉可能导致问题的代码行,然后在 iOS 14.6 设备上针对 safari 浏览器进行测试。 一旦我注释掉与快速点击相关的代码并检查 iphone iOS 14.6 开始工作。
我不确定为什么在 iPhone iOS 14.6 safari 浏览器上使用 fastclick.js include 时下拉菜单不起作用。
我遇到了类似的问题。 这个问题是 angular-material
告诉 AngularJS Material 手势模块跳过(或忽略)移动设备上的点击劫持。
$mdGestureProvider.skipClickHijack();