繁体   English   中英

如何使flex只使用鼠标滚动和键盘事件有用,否则将其传递给浏览器?

[英]How do I make flex only consume mouse scroll and keyboard events when it's useful, and otherwise pass it on to the browser?

这个曾经困扰过我一段时间。 当我使用鼠标滚轮在网页中向上和向下滚动,并且闪光电影进入光标的路径时,滚轮停止工作。 此外,当Flash影片具有焦点时,您无法使用Ctrl + LCtrl + R等浏览器快捷方式。

我现在正在编写一个flex应用程序,我想找到一个解决方案,这样至少我的用户不会受到这种用户界面行为不一致的困扰。

我认为有一种方法可以告诉flash将鼠标滚轮和键盘输入等事件传播回浏览器,除非它们出现在它们有用的元素中,例如在flex textarea中。 我找不到任何解决方案,甚至没有人在谈论它。

具体来说,我该如何做到:

  • 当用户使用鼠标滚动时,除非鼠标位于具有滚动条的Flex容器或要滚动的其他组件上,否则浏览器将滚动。
  • 当用户按下键盘上的按钮或按钮组合时,除非有活动的键盘监听器,或者光标位于文本字段中,否则它将传播到浏览器。

浏览器和闪存之间的通信是通过ExternalInterface完成的。 ExternalInterface允许您从JavaScript调用ActionScript方法,反之亦然。

祝你好运,因为经验表明处理键盘快捷键和浏览器不稳定往往很痛苦

我遇到了同样的问题。 但是,如果你已经在flex中构建了一个复杂的UI,那么我选择的解决方案需要进行大量更改。

使用HTML创建用户界面,并通过javascript与隐藏的flex(或flash)对象进行通信。

例如,将要在flex textarea中显示的任何字符串作为ExternalInterface调用中的参数传递。 然后在常规<textarea> html标记中显示该字符串。

这个策略对我的项目很有用

当您在闪光灯内部时,添加一个将在闪光灯内部处理的事件。外部接口禁用滚动并获得闪光灯聚焦。

当你走出闪光灯时,你仍然可以触发事件仍然调用外部界面来获得焦点到浏览器并停止闪光滚动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM