Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chooseImage 未选择图片取消后,没有触发 fail #862

Closed
swiftest0 opened this issue Oct 16, 2019 · 8 comments
Closed

chooseImage 未选择图片取消后,没有触发 fail #862

swiftest0 opened this issue Oct 16, 2019 · 8 comments

Comments

@swiftest0
Copy link

问题描述
h5 端使用 uni.chooseImage 未选择图片取消后,没有触发 fail,导致无法侦听取消事件。

@Wangyaqi
Copy link
Contributor

H5端不支持,无法实现

@swiftest0
Copy link
Author

H5端不支持,无法实现

为何不通过 files.length == 0 来判断

@liumingchu
Copy link

H5端不支持,无法实现

为何不通过 files.length == 0 来判断

Talk is cheap. Show me the code.

@Wangyaqi
Copy link
Contributor

https://github.com/dcloudio/uni-app/tree/dev/src/platforms/h5/service/api/media

你可以fork一份uniapp,改一个适合你自己的出来,如果你觉得也适合给别人用可以向我们提pr

@swiftest0
Copy link
Author

chrome 里如果弹出选择框前 input 为 focus,则弹出框后会触发 blur,点击取消后会重新触发focus(即框关闭后总会触发 focus)。
但测试 firefox 不支持,手机浏览器标准不一也无法使用此方案。
最终可以使用的方案为:chooseImage 时,先为 window 注册一个 touchstart(capture),当该事件触发时,检测 files 是否为空,来判断是否是取消事件。
已提交 pr

@zhetengbiji
Copy link
Collaborator

chrome 里如果弹出选择框前 input 为 focus,则弹出框后会触发 blur,点击取消后会重新触发focus(即框关闭后总会触发 focus)。
但测试 firefox 不支持,手机浏览器标准不一也无法使用此方案。
最终可以使用的方案为:chooseImage 时,先为 window 注册一个 touchstart(capture),当该事件触发时,检测 files 是否为空,来判断是否是取消事件。
已提交 pr

感谢支持,不过由于 touch 事件时机不准确,所以之前这个方案被放弃了

@swiftest0
Copy link
Author

事件时机虽然不准确,但是此实现可以保证程序完整的业务逻辑,在 api 调用上也可以保持一致性。
我觉得不应该由于程序优雅性上的事件延迟,而丢弃对取消选择图片的支持,因为实际上对于普通用户而言,这个延迟几乎是无感知的。

如果以后标准添加对该功能的支持的话,依然可以换用更好的方案。

不过就目前图片选择在手机 webview 的开发规范而言,在很长一段时间内应该都不会统一到可用的标准方案。所以此实现应该是当前情况下较适合的方案。

一个依赖于取消事件的案例:
用户点击选择图片后,需要禁用某些选项按钮(如:图片和视频只能二选一),此时如果没有该机制支持的话,将无法实现完整的业务逻辑。

希望能在主版本中提供此支持,虽然有点延迟的小问题(实际上对用户而言无感知),但总好过无法实现的业务逻辑吧。

@zhetengbiji
Copy link
Collaborator

事件时机虽然不准确,但是此实现可以保证程序完整的业务逻辑,在 api 调用上也可以保持一致性。
我觉得不应该由于程序优雅性上的事件延迟,而丢弃对取消选择图片的支持,因为实际上对于普通用户而言,这个延迟几乎是无感知的。

如果以后标准添加对该功能的支持的话,依然可以换用更好的方案。

不过就目前图片选择在手机 webview 的开发规范而言,在很长一段时间内应该都不会统一到可用的标准方案。所以此实现应该是当前情况下较适合的方案。

一个依赖于取消事件的案例:
用户点击选择图片后,需要禁用某些选项按钮(如:图片和视频只能二选一),此时如果没有该机制支持的话,将无法实现完整的业务逻辑。

希望能在主版本中提供此支持,虽然有点延迟的小问题(实际上对用户而言无感知),但总好过无法实现的业务逻辑吧。

这不是优雅和延迟的问题,而是稳定性与可用性的问题,此方式依赖用户的行为,而用户的行为不可控。
主分支暂不使用,开发者如可接受,可以自己使用此方式。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants