IE 无法在某些页面上加载 jQuery 扩展
IE fails to load jQuery extensions on certain pages
我的Rails应用程序使用了许多jQuery插件。 几乎所有页面都使用 jQuery.cookies 扩展来确定是否应该显示或隐藏特定元素。
此插件最初是 assets/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');
}
在调用 $(document).ready()
之前将 jQuery.cookie.js 的内容移动到 application.js 的顶部似乎可以缓解这种症状并允许 javascript 正常运行,但恐怕我还没有解决真正的问题。
这将发生在使用预编译资产的开发和生产中。
这些页面都没有引入任何页面独有的javascript,为什么jQuery.cookies在如此狭窄的情况下无法被评估?是否有处理我不知道的多个不同 JavaScript 文件的约定,我可能错过了?
编辑
我收回它;将jquery.cookies的内容移动到应用程序中.js只有在第一次加载页面时才似乎有效。后续重新加载表现出相同的行为。完全不知所措。
事实证明,有一个条件仅在此页面上FB.init()
运行,它似乎破坏了用于访问 cookie 对象的$
符号。
我不完全确定为什么会这样;这可能是FB
使用原型库的结果,或者FB
对象可能由于某种原因导致jQuery重新初始化。
通过将 $(document).ready()
js 文件的内容包含在另一个函数中来更改 js 文件的内容允许两组 javascript 运行,尽管调用 jQuery.noConflict()
并通过 jQuery
而不是$
同样有效,但也需要更改任何js.erb
文件。
//= require jquery
//= require jquery-ujs
(function($) { // the $ is explicitly set to jQuery for this scope
$(document).ready(function() {
// no more complaints that 'cookies is not a method of $'
if ($.cookies('showHero') == true ) {
// do something
}
});
})(jQuery);
- 使用javascript函数在页面初始化后加载jquery
- 什么'这是加载jQuery的最佳方式
- 在WordPress站点中加载jquery.js后加载javascript代码
- 延迟加载jquery后替换$(document).ready(function)
- 如何使用onLoad加载jQuery JSON.从Zipcode On Form获取城市和州
- 对页面重新加载 Jquery 执行操作
- 在Ajax(过滤器)加载之后加载jQuery脚本
- 异步加载JQuery时Tabbed Box已损坏
- 加载Jquery时Chrome扩展出错
- 在更改事件上加载jQuery DataTable
- 手动加载JQuery而不触发内容安全策略
- 如果更改,请在ng之后重新加载Jquery
- 脚本似乎在加载jQuery之前运行-未定义Uncaught ReferenceError:$
- 在使用jquery之前动态加载jquery
- 如何重新加载jquery,以便它能为下一个进程工作
- Firefox没有't从ajax.googleapis.com加载jquery
- 我无法在自定义Wordpress主题中成功加载jQuery
- 正在从maphilight href加载Jquery选项卡
- 如何在完全加载html之后加载jquery代码段
- 在页面加载jQuery/Javascript时,按.class对表行进行排序