Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Как проверить, разрешён ли JavaScript в браузере посетителя

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

Chein



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
"Чё-то я затупил..." (С) Гендальф.
 
Воткнулся в такую заморочку - никак не соображу как проверить, разрешен ли JS у пользователя.
 
Такое чувство, что забыл какую-то эдлементарщину навроде is_enabled (-8:
 
Подскажете?




Уточнил название. — Svarga.

Всего записей: 105 | Зарегистр. 10-10-2001 | Отправлено: 01:48 14-03-2003 | Исправлено: Svarga, 02:48 25-08-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну так вспомни.. таг такой <noscript></noscript>

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:58 14-03-2003
Chein



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery,
дааа... затупил, так затупил. Вот что значит неделю из PHP не вылезать, блн...
 
Спасибо большое!

Всего записей: 105 | Зарегистр. 10-10-2001 | Отправлено: 02:14 14-03-2003
Chein



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery, кстати не то. <NOSCRIPT> содержит в себе альтернативный контент, исполняемый в случае отключения скриптов. А мне нужно _убрать_ часть рюшечек у пользователя, который JS отключил или не имеет его как такового...

Всего записей: 105 | Зарегистр. 10-10-2001 | Отправлено: 01:25 16-03-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Напрямик такой функции нет, так как браузер не сообщает такой инфы, а значит и скрипт php просто так ее получить не может. Но можно это обойти:
Пример:

Код:
 
You can check if the user has Javascript from PHP only if you get them
to send you a page.  This is because PHP runs on the server.
 
Here is a PHP script to check it:
 
    <html><body>
    <!-- other stuff -->
    <form name="tester" action="<%=$PHP_SELF%>" method="post">
    <input type="hidden" name="JS_SWITCH" value="JS_OFF">
    <!-- any other fields -->
    <input type="submit" value="click to continue!...">
    </form>
    <script><!--
        document.tester.JS_SWITCH.value="JS_ON";
    //-->
    </script>
    </body></html>
 
If JS works, it will turn on the switch, else you'll get the same
JS_OFF.
 
-------------------
There is a good mechanism inbuilt to HTML, namely <noscript>.  
This lets you offer e.g. a form without submit button for those with  
javascript, and a form with submit button for those without javascript  
all in very simple code:
 
<FORM ACTION="<?php echo($PHP_SELF); ?>" METHOD="POST"  
name="FORM_select_number" id="FORM_select_number">
 
<select name="select_number" onchange="function_submit_select_number
()">
<option value="1">1</option>
<option value="2">2</option>
<option value="2">3</option>
</select>
<script language="JavaScript" type="text/javascript">
<!--
function function_submit_select_number(){
document.FORM_select_number.submit();
}
//-->
</script>
<noscript>
<input type="submit" value="do" name="SUBMIT_select_number">
</noscript>
</FORM>
 

 
или так

Цитата:
You could check it using 2 pages. The first page would have a location.href (JavaScript) so that it redirects to the second page. So, if your user ever gets to the second page, then it means that he/she has JavaScript enabled. If he/she doesn't, then he/she will stay on the first page, where you'll have <noscript> tags telling them how to enable JS


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:48 16-03-2003
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chein

Цитата:
 А мне нужно _убрать_ часть рюшечек у пользователя, который JS отключил или не имеет его как такового...  

под "рюшечками" ты имеешь в виду элементы окна (scrollbar, строку состояния, адресную строку) или какие-то элементы в HTML'е страницы?
Если первое, то нЭ судьба, если второе -- то через отсутствие <noscript>
 
Вообщем, что именно хочешь?

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 04:43 16-03-2003
Chein



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svarga, под "рюшечками" я имею ввиду вспомогательные элементы интерфейса, не работающие без JS.
К примеру, есть кнопочка, позволяющая задать начальную страницу сайта. Нажав на нее, пользователь получает кук с директивами. Но если у у пользователя JS отключен, то получит он шиш. А кнопочка с сылкой висит и сбивает с толку.
 
Поясняю в общем: мне нужно, чтобы броузер без скрипта НЕ ПОКАЗЫВАЛ часть контента. <NOSCRIPT> как раз позволяет ПОКАЗАТЬ. Не буду же я весь сайт в <NOSCRIPT> засовывать?

Всего записей: 105 | Зарегистр. 10-10-2001 | Отправлено: 01:04 18-03-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chein
Ну сначала определи, включен ли, как я написал выше.
Самый простой пример.  
Ставишь в <META HTTP-EQUIV=Refresh CONTENT="10; URL=script.php?js=off">
 
а внутри страницы пишешь где нить
<script>
location.href='script.php?js=on';
</script>
 
и определяешь

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:07 18-03-2003
Chein



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery, я попробую.
 
Рефреш мне не нравится по двум причинам:
1. В моем случае придется потрудиться, чтобы его прикрутить, т.к. сайт сам по себе не статический.
2. Рефреши очень не любят поисковики, особенно с малым временем перехода. Это не есть гут.

Всего записей: 105 | Зарегистр. 10-10-2001 | Отправлено: 01:17 18-03-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chein
Не вижу другого выхода.. можешь, конечно, убрать <meta> и вставить в <noscript> линк на script.php?js=off, чтобы усер его щелкал, но не думаю, что это лучше )

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:21 18-03-2003
Chein



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery, понял уже. Буду думать что важнее - убрать неработающие части интерфейса, или геморрой с определением включенности скриптов.
 
В любом случае, спасибо за советы!

Всего записей: 105 | Зарегистр. 10-10-2001 | Отправлено: 01:39 18-03-2003
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chein

Цитата:
Svarga, под "рюшечками" я имею ввиду вспомогательные элементы интерфейса, не работающие без JS.  
К примеру, есть кнопочка, позволяющая задать начальную страницу сайта. Нажав на нее, пользователь получает кук с директивами. Но если у у пользователя JS отключен, то получит он шиш. А кнопочка с сылкой висит и сбивает с толку.  

Просто выводи все эти вспомогательные элементы на странице через
document.write('<input type=button...
 
т.е. нет поддержки скрипта-- нет кнопок и т.п.
(а заодно и нет <noscript> -- я это имел в виду, сорри, что сразу не совсем по-русски выразился )

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 02:59 18-03-2003
Chein



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svarga, спасибо за совет, я так и сделал.
 
Проблема теперь в том, что в коде динамического меню много кода PHP и JS, кавычки путаются и write не работает... Бду разбираться.
 
Спасибо всем, кто ответил.

Всего записей: 105 | Зарегистр. 10-10-2001 | Отправлено: 00:29 24-03-2003
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chein

Цитата:
Проблема теперь в том, что в коде динамического меню много кода PHP и JS, кавычки путаются и write не работает... Бду разбираться.  

должно работать всё
наверно со "\"-ми намудрил

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 02:21 24-03-2003
olsufr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chein
Цитата:
мне нужно _убрать_ часть рюшечек у пользователя, который JS отключил или не имеет его как такового...  
Предлагаю такой вариант (модификация варианта Cheery):
 
1. Если страницы сайта статические, для каждой страницы создаются два варианта - для броузера с включенным JavaScript и с выключенным.
Если страницы динамические, то делается так, что по умолчанию серверный скрипт генерирует страницу для броузера с включенным JavaScript, а если существует параметр, скажем, js=0, то генерируется безскриптовая версия страницы.
 
2. Частью html-кода скриптовой страницы (например, page.php) должно быть так:

Код:
 
<html>
<head>
<script></script>
<noscript>
<meta http-equiv=Refresh content="1; url=page.php?js=0">
</noscript>
<title>JavaScript'овая версия страницы -- page.php</title>
</head>
<body>
....
</body>
</html>
 

Ну а далее, естественно, серверный скрипт получив параметр js=0 дальше уже сам записывает его в каждую ссылку на своей странице, передавая самому себе весточку (делается похоже как и с сессиями), что данный клиент не в ладах с JavaScript. Если все-таки кто-то с безскриптовым броузером попадет на JavaScript'овую версию любой страницы (например на начальную страницу сайта index.php или по ссылке с поисковой машины на другие страницы сайта), то тег meta http-equiv=refresh живо его переправит куда надо.
 
И думаю, что этот рефреш поисковикам глаза не будет мозолить.
 
Я исхожу из предположения, что JavaScript'овая версия страницы важнее, т.е. в принципе хочется чтобы на мониторе у юзера появилась именно она, а не безскриптовая версия. Поэтому те, у кого поддержка JavaScript включена, спокойно, без напряга смотрят сайт. А те, у которых JavaScript отключен, ждут пока их перенаправят (причем ждут один только самый первый раз - потом они щелкают уже сразу по безскриптовым страницам).
 
 

Всего записей: 363 | Зарегистр. 07-08-2002 | Отправлено: 15:56 24-08-2003
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
olsufr

Цитата:
траницу сайта index.php или по ссылке с поисковой машины на другие страницы сайта), то тег meta http-equiv=refresh живо его переправит куда надо.  
 
И думаю, что этот рефреш поисковикам глаза не будет мозолить.  

ещё и как будет: в Вебмастеринге я недавно выкладывал ответ с Яндекса по поводу refresh'ей-- где это именно-- так и нашёл , так вот: написали, что страницы с meta-refresh в любом случае не индексятся (независимо от длительности задержки)-- только те индексятся, куда стоит переадресовка.

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 19:34 24-08-2003 | Исправлено: Svarga, 23:49 24-08-2003
4ubaka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
сорри народ... если вы имели в виду проверку через php
то все гениально просто и придумано за нас
$agent = get_browser(null,true);
$is_js_aval = $agent['javascript']; //1 если разрешен

Всего записей: 8 | Зарегистр. 02-01-2007 | Отправлено: 15:51 08-01-2009 | Исправлено: 4ubaka, 16:35 08-01-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
4ubaka

Цитата:
сорри народ... если вы имели в виду проверку через php
то все гениально просто и придумано за нас

это говорит только лишь о поддержке, но ни слова о том, включен ли он.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:13 08-01-2009
michako

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А если так, за одно куки проверить:
 
<?php
setcookie ("testcookie", "on",0, "/");  
$phpself = $_SESSION['PHP_SELF'] ;
if (isset($_POST['js']) AND $_POST['js'] == "on")
   {
      $js = $_POST['js'] ;      
   }  
     else  
           {      
               echo "<form name=jscript action='$phpself' method='post'>
                        <input name=\"js\" type=\"hidden\" value=\"on\">
                        </form>
                        <SCRIPT language=javascript>  
                          document.forms.jscript.submit()
                        </script>
                       ";
               $js = "off" ;
            }
            
if (isset($_COOKIE['testcookie']) AND $_COOKIE['testcookie'] == "on" )
   {
     $cookie = "on" ;
   }
    else
         {
            $cookie = "off" ;
         }
echo "Cookie: ".$cookie."<br>" ;
echo "JavaScript: ".$js;
?>

Всего записей: 1 | Зарегистр. 13-03-2009 | Отправлено: 15:08 13-03-2009 | Исправлено: michako, 15:29 13-03-2009
Annymann

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
у меня ламерский вопрос(с редактированием javascript познакомился 6 часов назад) -  
как проверить два условия и как создать фильтр?
 
вот скрипт:javascript:var t=((window.getSelection&&window.getSelection())||(document.getSelection&&document.getSelection())||(document.selection&&document.selection.createRange&&document.selection.createRange().text));
if(t!=''){window.open('http://translate.google.com/translate_t?text='+t+'&hl=ru&langpair=auto|ru&tbb=1&ie=');}else{window.open ('http://translate.google.com/translate_t#auto|ru|');};
 
Сначала получаем строку, затем открываем окно и скармливаем строку гугл-переводчику; если строки нет - просто открываем переводчик.
Мне нужно, чтобы кроме этого проверялось, какие символы в строке - кириллические или левые, а затем открывался переводчик.
Как-то так:if(t!=''а','б','в','г''){window.open('http://translate.google.com/translate_t?text='+t+'&hl=ru&langpair=ru|en&tbb=1&ie=');}else{window.open ('http://translate.google.com/translate_t#auto|ru|');};else{window.open ('http://translate.google.com/translate_t#auto|ru|');};

Всего записей: 118 | Зарегистр. 19-11-2005 | Отправлено: 08:36 29-03-2009
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » Как проверить, разрешён ли JavaScript в браузере посетителя


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru