我正在做一些基本的toggleClass函數,使用enquire.js來處理一些響應式項目。iOS 4 Safari和Android 2.3瀏覽器Modernizr/matchMedia/Enquire.js緩存問題
對於較舊的瀏覽器,例如Android 2.3及更低版本和iOS 4 Safari,以下示例不起作用。
我正在做一些modernizr測試,如下所示。舊版Android瀏覽器和iOS 4 Safar不支持matchMedia,因此不支持matchMedia填充。
我創建了一個測試用例,並使用BrowserStack對其進行了測試,並且在iOS 4及以下版本中失敗。 http://goo.gl/3a3ss,或小提琴,可能會或可能不會工作.. http://jsfiddle.net/jSg6X/
本來這是用於Drupal網站。在初始加載時,一切正常。如果刷新頁面或嘗試轉到其他頁面,腳本在matchMedia測試中失敗。如果清除瀏覽器緩存並重新加載,它將再次運行,但僅適用於該頁面。
(函數($,窗口,文件){
Modernizr.load([
{
test: Modernizr.mq('only all'),
nope: 'js/respond.min.js'
},
{
test: window.matchMedia,
nope: 'js/matchMedia.js'
},
{
load: 'js/enquire.min.js',
complete: function(){
var query = "all and (max-width:600px)";
var $myButton1 = $(".mybutton1");
var $myButton2 = $(".mybutton2");
enquire.register(query, [
{
match: function(){
$myButton1.on("click", function(){
$(".menu").toggleClass("showme");
});
},
unmatch: function(){
$myButton1.off("click");
},
match: function(){
$myButton2.on("click", function(){
$(".menu2").toggleClass("showme");
});
},
unmatch: function(){
$myButton2.off("click");
}
}
],true).listen();
}
}
]);
})(jQuery的,這一點,this.document);
任何幫助,將不勝感激。我不確定我是否正確使用了enquire.js,或者我錯過了一些東西。
我創建了一個沒有進一步縮減的測試用例,並且獲得了這些結果。我用下面的JS(沒有意義的,我知道,但它加載第一次加載的警報,這就是它)
(函數($,窗口,文件){
Modernizr.load([ //第一測試需要matchMedia填充工具 { 測試:window.matchMedia, 都能跟得上: 'JS/media.match.min.js', 負載: 'JS/enquire.min.js', 回調:函數(){ alert(「test」); } } ]);
})(jQuery,this,this.document);
嘿@briggimus,按我在Twitter上評論,你能看到創建的jsfiddle /有codepen減少測試用例。 – WickyNilliams 2013-02-22 14:56:10