【问题标题】:Stop ctrl + click from returning 404 for modals in ruby/rails停止 ctrl + click 返回 404 用于 ruby​​/rails 中的模态
【发布时间】:2016-04-27 20:13:54
【问题描述】:

Ruby/Rails Jquery

当响应不是 HTML 时,通过按 ctrl + 单击强制在新选项卡中打开链接会返回 404 页面。我希望能够发出“此链接在新标签页中不可用”的警报。

在全球范围内实现这一目标的最佳方式是什么?我已经更新了操作由 JQuery 的“点击”事件控制的高用例,但我正在寻找更强大的解决方案。

示例: HTML:

 <a href="http://some_link/some_action">some link</a>

控制器:

 def some_action
   ...
   respond_to do |format|
     format.js
   end
 end

【问题讨论】:

  • 您需要在此处提供至少一点代码作为上下文。只要您的链接不是纯 JavaScript,在新窗口中打开不应导致自动 404。
  • 控制器返回的任何非 HTML 响应。例如 JS 或 JSON。我不确定你在寻找什么样的代码?它是一个链接,控制器返回 JS。
  • 我已经更新了我的问题。
  • 您可能需要放入某种有用的 HTML 版本来捕捉有人在新选项卡中打开它的情况。您的控制器仅支持 JavaScript。
  • 除非您可以阻止在新标签中单击和打开,否则可以通过没有链接但包含 click() 处理程序来完成某些操作,您绝对必须在单击时生成一些 HTML 格式的内容,即使这是一个“你是怎么到这里的”页面。

标签: jquery ruby-on-rails ruby http-status-code-404


【解决方案1】:

有几个选项,但我建议使用这样的东西:

$('.js-non-tabbable-link').on('click', function(event) {
  if (event.metaKey || event.ctrlKey){
    console.log("NOPE");
    event.preventDefault();
  } 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" class='js-non-tabbable-link'>Click Me</a>

【讨论】:

  • 这可能是最好的答案。除非有人知道从控制器操作中检测控制点击的方法。
  • 如果明天没有其他人提出任何建议,我会接受这个答案。
  • 我不知道当你控制点击时有任何东西被注入到 HTTP 标头中,但你总是可以通过一些调试来确认。
  • @tadman,不,它没有,但我认为这篇文章解决了 (stackoverflow.com/questions/7554507/…)
猜你喜欢
  • 2015-05-17
  • 1970-01-01
  • 2012-09-26
  • 2020-04-20
  • 1970-01-01
  • 2021-08-25
  • 1970-01-01
  • 2016-11-25
  • 2018-04-14
相关资源
最近更新 更多