我有一些由我的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中似乎只在第一次加載頁面時起作用。後續重新加載顯示相同的行爲。完全喪失。