[PHP] JS детектор

O
На сайте с 29.05.2008
Offline
195
1268

Здравствуйте.

Нужен максимально логичный и максимально актуальный способ определить статус JS в браузере с помощью PHP.

Сам пробовал сделать подсовывая подключение скрипта, а потом анализа лога доступа, но для этого способа нужна переадресация через meta, т.к. изменить Location и подгрузить скрипт одновременно не получиться.

У кого какие соображения? Может кто-то применял на своих проектах?

З.Ы. За <noscript> знаю, он будет использоваться только в случае, если JS статус не определен с помощью PHP.

systemiv
На сайте с 05.07.2012
Offline
60
#1
ortegas:
Здравствуйте.

Нужен максимально логичный и максимально актуальный способ определить статус JS в браузере с помощью PHP.

Сам пробовал сделать подсовывая подключение скрипта, а потом анализа лога доступа, но для этого способа нужна переадресация через meta, т.к. изменить Location и подгрузить скрипт одновременно не получиться.

У кого какие соображения? Может кто-то применял на своих проектах?

З.Ы. За <noscript> знаю, он будет использоваться только в случае, если JS статус не определен с помощью PHP.

Немного не понятен вопрос.

Если у Вас на клиентской части выполняется долгоработающий скрипт,то его можно разбить на части и отправлять аяксом информацию к серверу.

O
На сайте с 29.05.2008
Offline
195
#2

systemiv, а я вообще не понял ответ. :) Мне нужно определить включен ли в браузере JS (без перезагрузки страницы!) и уже в зависимости от этого генерировать контент. На фейсбук реализовано с перезагрузкой страницы, так и сам могу сделать, а вот вконтакте статус определяется налету. Как?

Б
На сайте с 12.02.2009
Offline
88
#3
ortegas:
Мне нужно определить включен ли в браузере JS (без перезагрузки страницы!) и уже в зависимости от этого генерировать контент

В PHP до генерации контента это нельзя определить (ведь никакие заголовки о том, включен Javscript или нет, браузер не шлёт)

Расскажите, что конкретно вы хотите сделать с помощью этой проверялки, чем больше подробностей, тем лучше, так не очень понятно

O
На сайте с 29.05.2008
Offline
195
#4

Бенджемен, бррр, вы меня вообще не понимаете? Какой AJAX в браузере с отключенным JS? :)

Смотрите. В шаблоне есть директивы [SCRIPT:true][/SCRIPT] и [SCRIPT:false][/SCRIPT]. Не сложно догадаться, что если JS отключен в браузере, то директива [SCRIPT:true] не передается пользователю, и наоборот. Вот проблема именно в проверки статуса JS в PHP скрипте, а не в браузере.

Напишите-ка пример с использованием AJAX. Я вот себе это слабо представляю. Вариант с проверкой пинга скрипта из <script src=... более логичен в данном случае, но все-равно не то.

Б
На сайте с 12.02.2009
Offline
88
#5

ortegas, есть один простой вариант, но сработает только после хотя бы одной загрузки страницы пользователем


<script>
document.cookie = 'en_cookie=1';
</script>

При второй загрузке странички в PHP можно будет узнать включены ли Cookie проверив значение переменной $_COOKIE['en_cookie']

O
На сайте с 29.05.2008
Offline
195
#6

Бенджемен, скажите, вы читаете между строк? Во-первых, где здесь AJAX? Во-вторых, ясно же написал "без перезагрузки страницы". Вариантов с перезагрузкой страницы море, но мне нужна плавная проверка. Или что я должен выводить пользователю в первый раз? Блок управления с кнопками для form + блок управления с кнопками для AJAX? Может есть какие-то варианты с посредническим скриптом? Уверен, есть. Вот как сделали в вконтакте?

Б
На сайте с 12.02.2009
Offline
88
#7

ortegas, браузер посылает первый запрос

GET /showthread.php?t=774560 HTTP/1.1
User-Agent: Opera/9.80 (X11; Linux x86_64; Edition Linux Mint) Presto/2.12.388 Version/12.12
Host: forum.searchengines.ru
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Referer:
Cache-Control: no-cache
Connection: Keep-Alive

Никакая информация о Javascript не передаётся => при первой загрузке определить невозможно включен или выключен Javascript

Остаётся придумывать свои хитрые способы

ortegas:
Вот как сделали в вконтакте?

А что они сделали? Если включен Javascript всё прекрасно работает, если выключен идёт переадресация на http://vk.com/badbrowser.php

Реализовано у них это очень просто

<noscript><meta http-equiv="refresh" content="0; URL=/badbrowser.php"></noscript>
O
На сайте с 29.05.2008
Offline
195
#8
А что они сделали? Если включен Javascript всё прекрасно работает, если выключен идёт переадресация на http://vk.com/badbrowser.php

Пардон, тогда остается Facebook для примера.

Остаётся придумывать свои хитрые способы

Да ладно невозможно. :) Когда отключенные картинки как-то определяют, а скрипты вдруг нельзя. Мне в голову лезет самый примитивный вариант: анализировать лог доступа. Но это не кроссплатформено, и вообще не хочется при каждой загрузке файл дергать, preg_match запускать. Может в сессию request на js файлы записывать? Помогите-ка. :)

Б
На сайте с 12.02.2009
Offline
88
#9
ortegas:
Пардон, тогда остается Facebook для примера.

Всё аналогично

<noscript><meta http-equiv="refresh" content="0; URL=/?_fb_noscript=1" /></noscript>



---------- Добавлено 18.02.2013 в 05:46 ----------

ortegas:
Да ладно невозможно. Когда отключенные картинки как-то определяют, а скрипты вдруг нельзя. Мне в голову лезет самый примитивный вариант: анализировать лог доступа. Но это не кроссплатформено, и вообще не хочется при каждой загрузке файл дергать, preg_match запускать. Может в сессию request на js файлы записывать? Помогите-ка.

Вы лучше скажите для чего вам это понадобилось? И исходя из целей можно придумать самый оптимальный "хитрый" способ проверки

IL
На сайте с 20.04.2007
Offline
435
#10
ortegas:
Да ладно невозможно

Собственно...

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий