我有一些由我的Rails应用程序使用的jQuery插件。几乎所有页面都使用jQuery.cookies扩展来确定是否应显示或隐藏特定元素。IE无法加载某些页面上的jQuery扩展
这个插件最初下的资产/ JavaScript的它自己的文件,并使用加载以下清单:
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_self
//= require_directory . //there is a subdirectory i'm ignoring, but jquery.cookies isn't in it
在Internet Explorer,jquery.cookies.js正在所需它除了每个页面上进行评估两个,其中cookies
对象未被添加到jQuery
。这些网页包含对我的应用程序相同的JavaScript的任何其他页面:
javascript_include_tag('application')
受影响的页面,下面的代码进行评估时,被扔像“对象不支持此属性或方法”错误关于cookie的方法:
if ($.cookie("showHero") == 'true' || $.cookie("showHero") == null) {
$('#hero').css('display', 'block');
} else {
$('#hero').css('display', 'none');
}
移动jQuery.cookies.js的内容的application.js的顶部,称$(document).ready()
之前似乎可以减轻这种症状,并允许JavaScript才能正常运行,但恐怕我还没有解决真正的问题。
这将发生在使用预编译资产的开发和生产上。
这些页面都没有介绍任何对页面来说独一无二的javascript,为什么jQuery.cookies可能无法在这样一个狭窄的情况下进行评估?是否有处理多个不同的JavaScript文件的约定我不知道我可能错过了?
编辑
我把它收回;将jquery.cookies的内容移动到application.js中似乎只在第一次加载页面时起作用。后续重新加载显示相同的行为。完全丧失。