如何阻止这些rails-js-jquery 弹出窗口在 Firefox 中重复出现?
它们只在 Chrome 中显示一次……尽管在我的 Ubuntu 机器上的“Chromium”中不显示。
我检查了 Chrome,没有安装任何扩展程序。
JavaScript 运行了两次,所以我看到 4 条消息。
其他部分工作正常(数据库更新,用户界面范围更新)
haml 是 app/views/link/index.haml
= link_to 'verify', verify_link_path(:id => link.id, :table_row => index),
class: 'verify', remote: true
JavaScript 是 app/views/links/verify_link.js.erb
$("span#verify_link_<%=params['table_row']%>").text('verified');
alert("message 1");
alert("message 2");
Controller 是app/controllers/links_controller.rb
def verify_link
@link = Link.find(params[:id])
@link.verified_date = Time.now
@link.save!
respond_to do |format|
format.js
end
end
js是verify_link_js.erb:
$("span#verify_link_<%=params['table_row']%>").text('verified');
alert("message 1");
alert("message 2");
每次验证点击时,网络选项卡仅显示一次 js 文件。 Chrome 中的弹出窗口是:
而在 Firefox 中我只是得到
最佳答案
为什么它们显示两次(尽管不是为什么在 Firefox 中不!)的答案是我的 javascript Assets 文件 (app/assets/javascript/application.js
)有以下内容:
//= require_self
//= require jquery-1.7.2.min
//= require jquery-ui-1.8.22.custom.min
//= require default_on_first_input_field
//= require row_shading
//= require sortable_hook
//= require_tree .
这基本上需要文件两次 - 单独,然后通过 require_tree
。
我的首选解决方案是删除个人需求。可以要求这个项目的所有内容......事实上 require_tree 就是这样做的。所以我把它改成了
//= require_self
//= require_tree .
有趣的是,这个问题到目前为止还没有在现有的 javascript 函数中出现。他们大概“可以”跑两次,这是有道理的,例如“行阴影两次”就可以了。所以基本上,这是我升级的剩余“工件”,以使用从 Rails 2.3.8(之前)开始的应用程序中的 Assets 管道。
关于javascript - 为什么 Chrome 会显示这些 (rails-jquery) 警报两次,而 Firefox 却不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23981504/