Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Возможно ли уменьшить код? (https://javascript.ru/forum/misc/27060-vozmozhno-li-umenshit-kod.html)

Pug-dog&Elephant 01.04.2012 18:04

Возможно ли уменьшить код?
 
Есть код, выполняющий проверку на мобильность браузера. Если браузер запущен на каком-то мобильном устройстве, то происходит перенаправление пользователя.
var userag = navigator.userAgent.toLowerCase();
	
    var isAndroid = userag.indexOf("android") > -1;
    if(isAndroid) {
        window.location = '1.html';
    }
	
	var isWindowsPhone = userag.indexOf("windows phone") > -1;
    if(isWindowsPhone) {
        window.location = '1.html';
    }
	
	var isWindowsPhone = userag.indexOf("xblwp7") > -1;
    if(isWindowsPhone) {
        window.location = '1.html';
    }

	var isWindowsPhone = userag.indexOf("zunewp7") > -1;
    if(isWindowsPhone) {
        window.location = '1.html';
    }	
	
	var isOperaTablet = userag.indexOf("opera tablet") > -1;
    if(isOperaTablet) {
        window.location = '1.html';
    }
	
	var isOperaMobi = userag.indexOf("opera mobi") > -1;
    if(isOperaMobi) {
        window.location = '1.html';
    }

	var isOperaMini = userag.indexOf("opera mini") > -1;
    if(isOperaMini) {
        window.location = '1.html';
    }
	
	var iPhone = userag.indexOf("iPhone") > -1;
    if(iPhone) {
        window.location = '1.html';
    }
	
	var iPad = userag.indexOf("iPad") > -1;
    if(iPad) {
        window.location = '1.html';
    }
	
	var iSymbian = userag.indexOf("symbianos") > -1;
    if(iSymbian) {
        window.location = '1.html';
    }

Недостаток кода в том, что слишком много if используется. Возможно ли как-то уменьшить код, к примеру через массив или как-то ещё?

Verhal 01.04.2012 18:09

используй switch

melky 01.04.2012 18:17

var userag = navigator.userAgent.toLowerCase(),
    var toReload = [
          "android",
          "windows phone",
          "xblwp7",
          "zunewp7",
          "opera tablet",
          "opera mobi",
          "opera mini",
          "iPhone",
          "iPad",
          "symbianos"
    ].join(";");

if( ~toReload.indexOf("userag") ){
     window.location = '1.html';
}

Pug-dog&Elephant 02.04.2012 00:01

Ещё вопрос: а что за операцию совершает тильда перед toReload?

melky 02.04.2012 00:08

обращает биты числа.

другими словами, проводит такую мат. операцию : -(x+1)


Часовой пояс GMT +3, время: 01:27.