Статьи Массовая проверка скрипта JavaScript на кроссбраузерность.

Discussion in 'Статьи' started by |qbz|, 1 Sep 2012.

  1. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    388
    Likes Received:
    169
    Reputations:
    65
    Ну что, граждане, у нас на дворе? Первое сентября. День знаний. Что-то появилось у меня настроение написать что-то полезное, минут этак за 20, больше времени тратить не хочется.

    Поэтому расскажу я

    Как массово проверить кроссбраузерность JavaScript-кода


    С проблемой это я столкнулся относительно давно, когда писал javascript-криптеры под криптосервис. Тогда нужно было быть на 100% уверенным, что весь код будет работать безукоризненно. Поэтому пришлось придумывать, как прочекать на разных браузерах, на разных ОС итд. Первое, что пришло в голову это заюзать сервисы, которые делают скриншот страницы. Почему? Потому что тогда можно было бы проверить работоспособность скрипта javascript простым алертом. То есть пилим в скрипт что-то типа:

    HTML:
    if (uslovie_ispolneno)
    {
    	alert("Okay");
    }
    else
    {
    	alert("Error");
    }
    Потом просто посмотреть получившиеся фотки и увидеть где работает, а где - нет. На этом можно было бы остановиться, но мне показалось, что это как то криворуко, что есть более элегантное решение. Тем более, что на таких сервисах хоть и большое количество браузеров, и есть даже разные ОС, но все равно их мало, если сравнивать с общим количеством вообще. Да и ждать фоток долго, пока все сфоткается ждать минут 30, а что если я в процессе отладки буду раз 50 проверять - этож сколько времени уйдет.

    Поэтому я отбросил этот вариант на самый последний план и решил задуматься как можно прочекать иначе. И вот тут я придумал очень простую и гораздо более эффективную идею - чекать скрипты на обычном трафе. Да, да, просто покупаем где-то на бирже фрейм-траффа касариков 10 трафа за 10 баксов и пускаем на адрес, где расположен javascript. Можно останавливать и запускать поток снова - по мере необходимости. А что, собственно, делает файл, куда льется траф? И как происходит проверка? Все предельно просто - в скрипте есть "развилка":

    HTML:
    location.href = "./check.php?status=" + ((vse_srabotalo_tak_kak_nado)?("okay"):("error"));
    То есть если все прошло удачно - то пользователь загрузит check.php?status=okay, а если где-то возникнет ошибка - check.php?status=error.

    Сам скрипт check.php бы ловил User-Agent и записывал в базу. После этого очень легко проверить на каких браузерах и ОС скрипт работает с ошибками и искать решение проблемы под данный браузер / ОС. Также может настать случай, когда "vse_srabotalo_tak_kak_nado" просто не обьявится или скрипт загнется где-то еще перед редиректом - на данный случай лучше фильтровать "от обратного". То есть записывать сразу все юзер-агенты еще перед загрузкой скрипта, а после редиректа - всего лишь добавлять им флаг, что браузер исполнил код корректно. Оставшиеся юзер-агенты - это те, которые даже не дошли до редиректа - то есть те, где возникает ошибка.

    Ну я думаю принцип понятен, пойду налью еще кофейку )
     
    #1 |qbz|, 1 Sep 2012
    Last edited: 1 Sep 2012
  2. AnGeI

    AnGeI Elder - Старейшина

    Joined:
    8 Dec 2008
    Messages:
    396
    Likes Received:
    79
    Reputations:
    16
    Неплохая штука, сталкивался с похожими проблемами.
    Приходилось выводить страницу, что необходимо менять браузер для корректной работы сайта как-бы намекая, что IE не совсем браузер.
     
  3. drim

    drim Member

    Joined:
    27 Aug 2009
    Messages:
    347
    Likes Received:
    33
    Reputations:
    4
    где траф под такие тесты брал?
     
  4. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    388
    Likes Received:
    169
    Reputations:
    65
    Ушло в личку.
     
Loading...