Rails window.onload 的 turbolinks 问题
Rails turbolinks issues with window.onload
我有 rails 带有用于图像弹出效果的 baguetteBox 库的应用程序,但它只有在页面刷新后才能正常工作。
我知道这是因为 turbolinks 所以我安装了 jquery-turbolinks gem 但它仍然不起作用。 //要求 jquery.turbolinks 在正确的位置。
//
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require baguetteBox.min
//= require turbolinks
//= require_tree .
我在显示视图的底部有这段代码
<script>
window.onload = function() {
baguetteBox.run('.step_div');
};
</script>
初始化脚本。
有什么想法吗?
您需要为 turbolinks 触发稍微不同的东西:
var myFunc = function() {
baguetteBox.run('.step_div');
};
$(document).ready(myFunc);
$(document).on('page:load', myFunc); // Classic Turbolinks
$(document).on('turbolinks:load', myFunc); // Turbolinks 5
这样,您的函数将在标准页面就绪触发器上被调用,并且当 turbolinks 将页面加载到内存而无需实际页面刷新时也会被调用。
显然,您只需要为您正在使用的相应版本的 turbolinks 添加 turbolinks 事件触发器。
在这里查看由 turbolinks 5 触发的其他事件:https://github.com/turbolinks/turbolinks#full-list-of-events
对于原始的 turbolinks,文档在此处:
https://github.com/rails/turbolinks/#events
我有 rails 带有用于图像弹出效果的 baguetteBox 库的应用程序,但它只有在页面刷新后才能正常工作。 我知道这是因为 turbolinks 所以我安装了 jquery-turbolinks gem 但它仍然不起作用。 //要求 jquery.turbolinks 在正确的位置。
//
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require baguetteBox.min
//= require turbolinks
//= require_tree .
我在显示视图的底部有这段代码
<script>
window.onload = function() {
baguetteBox.run('.step_div');
};
</script>
初始化脚本。
有什么想法吗?
您需要为 turbolinks 触发稍微不同的东西:
var myFunc = function() {
baguetteBox.run('.step_div');
};
$(document).ready(myFunc);
$(document).on('page:load', myFunc); // Classic Turbolinks
$(document).on('turbolinks:load', myFunc); // Turbolinks 5
这样,您的函数将在标准页面就绪触发器上被调用,并且当 turbolinks 将页面加载到内存而无需实际页面刷新时也会被调用。 显然,您只需要为您正在使用的相应版本的 turbolinks 添加 turbolinks 事件触发器。
在这里查看由 turbolinks 5 触发的其他事件:https://github.com/turbolinks/turbolinks#full-list-of-events
对于原始的 turbolinks,文档在此处: https://github.com/rails/turbolinks/#events