Rails项目:jQuery插件在刷新前未加载
Rails Project: jQuery Plugin not loading until refresh
我在Rails 4中构建了一个应用程序。我在我的展示页面上有以下JS插件,但它们似乎只有在我手动重新加载页面时才能工作。
我读到这可能是由于涡轮链接,但由于这些插件在身体而不是头部,这似乎不是涡轮链接的问题。
我甚至试着把这些粘贴在页眉和页脚标签中,但这些标签给了我同样的问题。有时,其中一个插件加载,另一个不加载。
下面的第一个插件是AddThis社交按钮,另一个是图片库。
有什么建议吗?
演示页面http://mktdemo.herokuapp.com/listings/45
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ashfaaq">
</script>
<script>
jQuery(document).ready(function($) {
$('#gallery-1').royalSlider({
fullscreen: {
enabled: true,
nativeFS: true
},
controlNavigation: 'none',
autoScaleSlider: true,
autoScaleSliderWidth: 960,
autoScaleSliderHeight: 850,
imageScaleMode: 'fit-if-smaller',
navigateByClick: true,
numImagesToPreload:2,
arrowsNav:true,
arrowsNavAutoHide: true,
/* arrowsNavHideOnTouch: true, */
keyboardNavEnabled: true,
fadeinLoadedSlide: true,
globalCaption: false,
globalCaptionInside: false,
loop: true,
thumbs: {
appendSpan: true,
firstMargin: true,
paddingBottom: 4
}
});
});
</script>
您可以在此处找到问题的答案:Rails 4 turbo链接阻止jQuery脚本运行
Rails4使用Turbolinks,它只加载页面javascript和css一次,然后只替换标题中的正文和标题。这就是为什么jQuery(document).ready只有在重新加载页面时才能工作的原因。
为了触发您的javascript,您必须使用Turbolinks事件,如
page:change the page has been parsed and changed to the new version and on DOMContentLoaded
或
page:load is fired at the end of the loading process.
更多详细信息请点击此处:https://github.com/rails/turbolinks/#events
在这里,您可以更换
jQuery(document).ready(function($) {
...
通过
$(document).on('page:load', function($) {
...
听起来涡轮链接是造成问题的原因。
你可以安装这个宝石:Jquery Turbolinks
或者你可以更换
jQuery(document).ready(function(
....
));
带有
$(document).on('page:load', function(
....
));
以下是一个很好的复制/粘贴,说明了为什么涡轮链接会导致jquery出现一些问题。
TurboLinks是一个类似PJAX的库,它异步请求下一页的内容并将其插入当前页面的正文中,而不需要重新加载整个页面。它很好地加快了页面加载时间。但是,由于页面是重新加载的,因此会触发DOMContentLoaded事件,并且不会触发jQuery document.ready事件。
源
我在Rails 5上的jQuery图像库也遇到了同样的问题。除非刷新页面,否则它不会加载。经过一年(断断续续)的尝试,以下是对我有效的破解方法:
将jQuery库代码封装在一个函数中:
var delayLoad = function(){
$('#gallery-1').royalSlider({
...
})
}
然后用setTimeout:调用它
setTimeout(delayLoad, 250)
这每次都为我解决了问题,而无需刷新页面。
- 使用php脚本验证访问者的年龄,并在不刷新的情况下根据结果加载iframe
- Progressbar计时器,仅在页面刷新时重新加载
- 重新加载charkick pie_chart而不刷新页面
- cookie更改时自动重新加载(自动刷新)html页面
- 无法使用javascript插件在首次运行时加载实际图像大小(图像在刷新后加载)
- 如果页面加载时间超过 10 秒,如何刷新页面
- 页面刷新后重新加载 ajax 检索到的数据
- JQuery AJAX - 如何使用方法 GET 调用刷新/重新加载页面
- HTML 不加载 CSS ,刷新后一切正常.同样在移动设备上,它在首次加载时不起作用
- X 可编辑刷新加载数据源
- Javascript - 检测刷新 - 加载和卸载 - 你能用它们来检测刷新吗?
- Safari在服务器端的刷新/加载前不运行回调函数(调用客户端代码)
- 仅在插入或更新新数据时自动刷新/加载数据
- 如何判断一个Angularjs页面是通过刷新加载的还是通过链接导航的
- 使用jQuery选项卡刷新加载到iframe中的html
- 如何设置滚动到顶部刷新/加载?(只支持AngularJs或Js,不支持Jquery)
- 流星全页刷新加载更多按钮(铁路由器)
- Jquery移动刷新加载地图API v3
- 我怎样才能制作一个“;循环一次”;在每次刷新/加载页面时播放GIF动画背景
- 如何在页面刷新/加载时刷新验证码图像