【问题标题】:Overriding the right-click context menu in web browsers - pros and cons覆盖 Web 浏览器中的右键单击上下文菜单 - 优点和缺点
【发布时间】:2009-03-17 14:51:21
【问题描述】:

我们正在编写一个 Web 应用程序(不仅仅是一个网站,而是一个真正的应用程序),并针对下一个版本进行以下讨论:

  • 我们的 UI 设计师想要替换浏览器的右键单击上下文菜单(在适当的地方显示我们自己的菜单,或者根本不显示菜单),因为他希望 Web 应用更像我们的(现有)Windows 应用
  • 我们的开发人员(和我)强烈反对,因为这是一种不好的做法,而且只是您在 Web 应用程序中不应该做的事情

因此,我正在寻找“更可靠”的论据——例如最佳实践指南、来自信誉良好的来源的任何陈述、编码论据等——以了解这个问题的利弊,我希望可以用它来解决它一次并且为所有人...

【问题讨论】:

  • 我对这个问题的答案非常失望。下面的 Paulo Guedes 有正确的思路,但没有提供答案。我正在构建一个网络应用程序,我自己将成为唯一使用过的人。我想在我的应用程序中使用此功能,但没有人能够提供一个好的答案(大多数建议 return false;,但我需要在点击后继续执行脚本。

标签: browser contextmenu


【解决方案1】:

无论如何,你不能可靠地做到这一点。在 Firefox 中,转到“设置”、“内容”、“JavaScript/高级”(我猜是字幕,没有英文 Firefox (;) 来覆盖上下文菜单行为,然后砰,您的应用程序不再工作了。我的网上银行应用程序在他们的旧版本,所以我不能用鼠标进行复制和粘贴。我讨厌它,所以我在 Firefox 中启用了保护,它起作用了。有点。他们的新版本不再做这种坏事了。

相反,在需要上下文菜单的地方使用一个小的下拉箭头,可以单击或将鼠标悬停在上面以显示菜单。 JetBrains 的 TeamCity 网络应用在这方面做得很好。

【讨论】:

【解决方案2】:

如果您的应用程序要在 Intranet 中运行,那么 UI 设计器参数可能是有效的:只要应用程序的所有用户都是众所周知的并且您想模拟某些 Windows 应用程序,我认为可以限制右键单击或任何其他输入,因为这只是此应用程序的要求,就像任何其他应用程序一样。

但是如果你的应用程序要在互联网上运行,禁用或替换右键单击是一个非常糟糕的主意,这些只是我提醒的一些论点:

  • 首先,改变用户界面的行为是激进和烦人的——没有人愿意为了访问您的网站而习惯“新控件”,而且通常人们讨厌离开他们的舒适区域。我的意思是,我知道我的右键单击会做什么,我希望它总是做同样的事情。

  • 人们可以理解 Windows 应用和 Web 应用之间的区别,因此无需“模仿 Windows 应用行为”。

  • 不是每个人都使用 Windows :-)

  • 此外,这是无效的,因为有多种方法可以覆盖此行为,例如 Firefox 中的设置,甚至是禁用特定 javascript 指令的插件,例如 this one

【讨论】:

  • 您不需要插件来覆盖 Firefox 中的行为。这是选项中的一个复选框。
【解决方案3】:

根据您的受众,您很有可能您的用户甚至不知道有一个右键菜单。所以请不要把它作为唯一的选择

【讨论】:

    【解决方案4】:

    我个人认为您应该不理会浏览器的默认行为...用户已经习惯了它们,因此无需让他们习惯您的做事方式。

    但是,如果您正在构建 Intranet(而不是公共站点),那么我会尽可能地进行调整以提高可用性。

    【讨论】:

      【解决方案5】:

      我会使用的一个论点(用引号表示戏剧效果):

      缺乏一致性和减少 与其他功能相比 畅通无阻的网络界面将导致 用户信心的丧失 - 这 至少可以说是不可取的。

      当然,如果许多或大多数 Web 应用程序用户已经熟悉或经常使用 Windows 应用程序,那么 UI 设计师可能走在正确的轨道上,并且与 Windows 应用程序一致性可能是赢家。

      也就是说,在我看来,很难在网页中制作直观的自定义上下文菜单,虽然有些用户可能会喜欢它,但我猜大多数人可能永远不会使用它。

      【讨论】:

        【解决方案6】:

        因为他希望网络应用更像我们的(现有)Windows 应用

        我认为在 Windows 应用程序中单击鼠标右键是个坏主意。

        在网络浏览器中,这是一场 UI 灾难,因为没有人会期待它。

        【讨论】:

          【解决方案7】:

          我认为这取决于您是否将上下文菜单视为浏览器 chrome 的一部分。如果你这样做了(我认为这是这个观点),那么它应该是偏离目标的,但否则它是为你的应用程序添加一些可用性的好地方。

          【讨论】:

            【解决方案8】:

            从 Web 应用程序替换 GUI 特定区域的浏览器右键单击上下文菜单可能非常有用。这样做只是为了禁用上下文菜单会惹恼你的用户,他们可能会想办法绕过它。此外,从应用程序的整个区域中删除或替换浏览器右键单击上下文菜单通常会很烦人,并且会使调试变得更加困难。

            很遗憾,我无法提供任何更可靠的论据,而且我并没有完全支持任何一方,但我想我会分享我作为 Web 应用程序开发人员和 Web 用户的经验。

            【讨论】:

              猜你喜欢
              • 2012-04-19
              • 2019-04-23
              • 1970-01-01
              • 1970-01-01
              • 2011-11-13
              • 2012-04-08
              • 2021-10-03
              • 1970-01-01
              • 2016-02-04
              相关资源
              最近更新 更多