1

我正在做一些基本的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);

+0

嘿@briggimus,按我在Twitter上評論,你能看到創建的jsfiddle /有codepen減少測試用例。 – WickyNilliams 2013-02-22 14:56:10

回答