【问题标题】:How to force browser to open only on instance of particular action如何强制浏览器仅在特定操作的实例上打开
【发布时间】:2011-12-31 10:33:18
【问题描述】:

我正在做一些 ROR 的事情并陷入了一些奇怪的情况。

我希望特定操作应在浏览器窗口或选项卡上一次打开,而不应在多个选项卡上打开。

例如。

如果我在一个标签页打开网站主页,则不应在同一浏览器的另一个标签页打开它。

我想要这个,因为我的页面包含大量数据,如果我在多个选项卡上打开它,那么浏览器会负载过重。所以我想通过一次只允许一个实例来避免这种情况。

我正在使用 导轨 3.0.1 红宝石 1.8.7 jQuery 1.4.4 请帮助:)

【问题讨论】:

  • 如果他们安装了plugin,您可以在客户端级别执行此操作,我已经看到它在服务器端完成但不记得在哪里,将环顾四周
  • +1 用于提出一个让人们学习新事物的问题。

标签: jquery ruby-on-rails browser


【解决方案1】:

不要这样做。永远。

用户有权根据需要打开尽可能多的站点实例,并且您有责任正确处理该问题。你的提议本质上是在剥夺用户的权利,这样你就可以推卸责任。

【讨论】:

  • 同意。但是,如果您发现必须执行此 eViL 操作的情况(没有“从不”之类的说法),请至少在用户采取该操作之前警告用户。
  • 这是一个“从不”。如果您认为必须这样做,那么您的设计就有缺陷,因为您是在与浏览器对抗而不是与它合作。
  • 很抱歉,每个应用程序都有不同的受众和不同的要求。在任何断言中使用“从不”是危险的,因为坦率地说,在任何开发环境中,不灵活都是一个可怕的特征。
  • 我们只需要同意不同意这一点。没有任何原则是不应该被打破的。我挑战你找到一份你可以让每个人都同意的“一般原则”的简明清单。除了公共互联网应用程序之外,Web 应用程序技术还有许多好处。在我们公司,我们通过 RoR 提供了丰富的内部工具,并且运行良好。
  • 我们的客户要求,所有报告都在新窗口或标签中打开是一项硬性要求。必需的。顾客。最后,你不必同意不同意,但你不会改变我的想法,很明显我不会改变你的想法,所以我不会用头撞这堵墙。这就是同意不同意的意思。 :P
【解决方案2】:

据我所知,没有办法实现您想做的事情,而且这样做是正确的。您网页上的代码应该仅与该页面相关,如果您能够查询客户端/浏览器打开了哪些选项卡和页面,我预计会有严重的安全隐患。

可能的选项是创建指向launch your site in a new window 的链接,并设置删除菜单、工具栏等选项。

【讨论】:

    【解决方案3】:

    同意已经制作的 cmets,阻止用户打开多个标签并不取决于您。如果这对他们造成性能问题,那么他们将停止这样做

    过去,我为某些 ajax 驱动的链接禁用“右键单击”事件而感到内疚,在新页面中打开链接不会呈现所需的内容,而是会在另一个选项卡中显示相同的内容.但这是一个不好的做法,最终归结为我对 JS 的使用不足。

    【讨论】:

      猜你喜欢
      • 2020-10-03
      • 2013-07-28
      • 2011-08-18
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多