0

我不确定这是否可能。我有一个使用 javascript 和 css 构建的 UI,界面用户使用按键进行导航。用于每个客户端更改的布局的 Css,例如“皮肤”。Javascript 控制功能并监控用户按键。

该设置有 2 个菜单,一个较低的菜单和一个较高的菜单。当您加载它时,较低的焦点是集中的,您可以使用左箭头或右箭头在菜单项之间移动。

在正常情况下,您会按“向上”来获得上层菜单,但是这个客户根本不想要这个菜单。

问题是我们不能简单地编辑 javascript 来阻止它,因为所有客户端都使用相同的 javascript,只有根据选择的客户端加载不同的 css。

所以现在我隐藏了上面的菜单,但问题是javascript仍然允许你按下,但是现在由于顶部菜单不存在,你失去了焦点,没有突出显示。如果意外按下,最终用户不知道他们为什么或如何失去焦点。(因为他们不知道顶部菜单所在的不同设置,他们没有意识到他们应该按下,他们只知道当他们按下左/右时似乎什么都没有发生)

我想要做的是,在css中,以某种方式阻止用户按下。因为我们不能只是去改变javascript。

这可能吗?还是我修改javascript的唯一解决方案?

蒂亚!!

感谢所有提供建议的人,只是为了澄清一下,我们将发布一个新版本,其中包含检查客户是否需要这个其他菜单的功能,如果不需要,则禁用向上按钮,但这需要新版本的软件,并且完全通过 QA。只是想同时快速破解这个客户.. :)

我们的最终解决方案将在数据库中有一个布尔字段,如果它是真的,javascript 将忽略向上键,如果为假,则正常运行。

4

3 回答 3

2

更改代码,使其仅在元素不存在时对向上箭头按键起作用。

EG 添加一个p然后class="noupkey"停止触发事件,如:

if($('.nokeyup').length === 0) {
//Do normal behaviour
} 
于 2013-02-11T18:19:39.257 回答
1

不幸的是,没有通过 css 禁用组件的正确方法,因为这种类型的功能适用于 javascript。

与我共事过的大多数程序员的理念是,您应该允许最终用户决定他们是否要使用新功能。

我的意思是,您应该在应用程序中留下一个选项,让用户自己禁用组件。这样,您可以为所有用户使用相同的 javascript 集,并且仍然以正确的方式禁用任何组件。这样做的真正好处是您不必再处理这张票,支持人员可以简单地引导任何客户完成重新创建请求的功能的操作。

但是,此解决方案中的大多数可能对您不可用。我知道改变你的工作场所惯例并不容易。

这里有一些可能更有用的东西,如何使用 CSS 禁用表单字段?一些建议可能适用于任何组件,包括菜单。

于 2013-02-11T18:23:53.997 回答
0

实际上这是一个非常奇怪的解决方案,但可以通过一些棘手的解决方案来完成。

使用更多 z-index 制作一个透明 Div,在该 Up Button 的主体级别上使用 Absolute Position,对于其余应用程序,将 Pointer Events Css 属性应用为 none,以便您的鼠标事件将在 below Div 上完成。

然后,对于您要禁用该控件的情况,不要将指针事件提供给最重要的 div,它将因鼠标事件而被禁用。

注意:IE 中的指针事件存在一些问题。

于 2013-05-29T18:52:00.077 回答