1. JavaScript / Говнокод #23450

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    const screenCssPixelRatio = (window.outerWidth - 8) / window.innerWidth;
    const screenZoomed = screenCssPixelRatio !== 2.639089968976215;
    
    if (screenZoomed) {
       return scrollWidth + 4;
    }
    
    return scrollWidth;

    Когда важна точность

    Запостил: prostohz, 24 Октября 2017

    Комментарии (14) RSS

    • screenZoomed же всегда false? или в жс и тут все не как у людей?
      Ответить
      • Почему всегда false? Я бы лучше предпололагал, что всегда true, т.к. вероятность, что некая питушня будет равна 2.639089968976215 крайне мала.
        Ответить
        • P.S. Для равномерно вореятных кобенаций внешней длины на [0, 10000) и внутренней длины на этом же промежутке, не превозмогая внешней длины, вореятность где-то 6e-8.
          > for(var i = 0; i < 10000; ++ i)
          >   for(var j = 0; j < 10000; ++ j)
          >     if((i - 8) / j === 2.639089968976215)
          >       console.log(i, j);
          
          2560 967
          5112 1934
          7664 2901
          Ответить
          • > 2560 967
            Похоже на правду - браузер в фуллскрине на 2560х1080, 113 пикселей ушло на шапку браузера. Осталось определить браузер по высоте шапки...
            Ответить
            • >Осталось определить браузер по высоте шапки...

              А есть более стабильный способ определения браузера?
              Ответить
              • Разумеется, есть:
                var ie = !-[1,];
                Ответить
                • Массив из одного числа по стандарту должен кастоваться в число т.е. [42] == 42 и -[42] == -42?
                  Ответить
                  • Да, только, насколько я помню, должен кастоваться через строку (как GT переводит неанглийский в неанглийский). И также должен быть толерантен к последней запятой, чтоб метухи могли нагенерить себе всё. IE же в своё время оказался метухофобом.
                    Ответить
            • А что мы ещё можем определить? Магическое число в теории несёт нам 53 бита информации, 2560 тратит 13 бит, остаётся ещё 40, а это целое слово из 5 букв, может быть даже приличное. Или целый IP адрес автора.
              Интересно, можно ли определить с точностью до операционки? Браузер+операционка+масштаб лежат в этих 113 пикселях.
              Ответить
              • Всё-таки не зря луковый браузер ругается, когда его на весь экран разворачиваешь.
                Ответить
                • Так там же параметров до жожути. Стоит только посмотреть описание очередной библиотеки по привязке пользователя к ID по фазам Луны. Через любую дыру пробиваются и нумеруют людей.
                  Ответить
        • На компе того кто это написал - видимо стабильно false
          Ответить
        • тьфу, пока писал, перепутал. конечно же true, поскольку флоаты нельзя сравнивать на точное равенство/неравенство
          Ответить
    • --А почему вот эта константа равна 42?
      --Не знаю, по-другому не работало
      Ответить

    Добавить комментарий