2017-01-03 5 views
0

Also mit dem folgenden Code ist es egal, ob mein Benutzer-Agent ist der eines mobilen Benutzers oder ein normaler Browser führt es die Ausführung des JQuery-Code, wenn ich nur was dieser Code ausgeführt wird, wenn der Benutzer eingeschaltet ist ein mobiler BrowserUser Agent Handy funktioniert nicht

 <script type="text/javascript"> 
window.mobilecheck = function() { 
var check = false; 
(function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm(os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s)|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(|\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(|\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg(g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v)|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v)|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|)|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera); 
return check; 
}; 
if(window.mobilecheck){ //If mobile is True run this JQuery Code 

    // create jump menu for mobile 
    (function($) { 
     $(document).ready(function() { 
     $('ul.menu').each(function(){ 
      var list=$(this), 
      select=$(document.createElement('select')).insertBefore($(this).hide()).change(function(){ 
      window.location.href=$(this).val(); 

      }); 
      $('>li a', this).each(function(){ 
      var option=$(document.createElement('option')) 
       .appendTo(select) 
       .val(this.href) 
       .html($(this).html()); 
       select.addClass('menu') 
      if($(this).attr('class') === 'selected'){ 
       option.attr('selected','selected'); 

      } 
      }); 
      list.remove(); 
     }); 
     }); 
    })(jQuery); 

} //End if mobile check 
    </script> 
+0

Was ist die Frage? – epascarello

+1

Können Sie 'if (typeof window.orientation! == 'undefined') {...}' versuchen, da dies nur von mobilen Geräten unterstützt wird –

+3

'window.mobilecheck' ist eine Funktion, die Sie aber nicht aufrufen Ihre if-Anweisung 'if (window.mobilecheck) {...}'. Sie müssen 'if (window.mobilecheck()) {...}' schreiben. Ihre if-Anweisung wird immer ausgeführt, weil 'window.mobilecheck' eine' truthy'-Anweisung ist. –

Antwort

1

window.mobilecheck ist eine Funktion, aber du bist es nicht in Ihrer if-Anweisung aufgerufen wird.

oben sieht der Code wie folgt:

window.mobilecheck = function() { 
    //Your code here... 
}; 

if (window.mobilecheck) { 
    //This code will always run because window.mobilecheck is truthy. 
} 

Wenn Sie jedoch Ihren Code ändern wie folgt aussehen:

//Call the function here. 
if (window.mobilecheck()) { 
    //This will only run if the return value is true. 
} 

Sie müssen den Wert von mobilecheck zu bekommen, aber Sie können tun Sie das nur, wenn Sie die Funktion aufrufen.

Stilistisch, ziehe ich den Wert in einer Variablen zu setzen, und wahrscheinlich irgendwo, wo man später diesen Wert leicht abrufen kann .:

var isMobile = window.isMobile = window.mobilecheck(); 
if (isMobile) { 
    //Do stuff here... 
} 

Siehe das Snippet für ein Beispiel von truthy vs Falsey Kontrollen in JavaScript einschlägigen auf deine Frage.

(function() { 
 

 
    'use strict'; 
 
    
 
    //Do a falsey check to see if the mobile function is defined. 
 
    if (!window.mobilecheck) { 
 
    document.write("Something's not right..."); 
 
    } 
 
    
 
    window.mobilecheck = function mobileCheck() { 
 
    //Do stuff here... 
 
    var isMobile = true; 
 
    return isMobile; 
 
    }; 
 
    
 
    //This will always run because window.mobilecheck has been defined. 
 
    if (window.mobilecheck) { 
 
    document.write("<br />Mobile check has been defined"); 
 
    } 
 
    
 
    var isMobile = window.mobilecheck(); 
 
    //We've retrieved the value from mobilecheck now. 
 
    if (isMobile) { 
 
    document.write("<br />This is a mobile device"); 
 
    } else { 
 
    document.write("This is not a mobile device"); 
 
    } 
 

 
})();

Ich hoffe, das hilft.