как проверить, включен ли javascript в модуле drupal7


Я создаю простой модуль, который показывает диалоговое окно пользовательского интерфейса jQuery. У меня есть немного HTML в моем коде, но я хочу показать это только пользователям, у которых включен javascript.

Для примера приведу содержимое моего файла .module:

function popover_init() {
    drupal_add_library('system', 'ui.dialog');
    drupal_add_js(drupal_get_path('module','popover') . '/popover.js', 'file');
}
?>
<div id="dialog" title="D7 jQuery dialog">
    <p> bla bla bla </p>
</div>

Как мне проверить, включен ли javascript в drupal, чтобы я мог запретить своему модулю загружать ненужные материалы?

Author: FLY, 2012-04-11

3 answers

Вы должны быть в состоянии сделать следующее, чтобы скрыть div от пользователей, не являющихся пользователями JS:

function popover_init() {

  $js = "jQuery(document).ready(function(){";
  $js = "jQuery('#dialog').css('display', 'block');";
  $js = "});";

  drupal_add_library('system', 'ui.dialog');
  drupal_add_js(drupal_get_path('module','popover') . '/popover.js', 'file');
  drupal_add_js($js, 'inline'); 
}

<div id="dialog" title="D7 jQuery dialog" style="display:none">
    <p> bla bla bla </p>
</div>

По сути, ваш div диалога начинается скрытым (с помощью встроенного CSS), а затем не скрывается с помощью jQuery.

Если у пользователя не включен JavaScript, то блок не будет виден!

Я также предполагаю, что эта часть:

<div id="dialog" title="D7 jQuery dialog">
  <p> bla bla bla </p>
</div>

Находится в файле шаблона, а не просто находится вне функции в вашем модуле.

 1
Author: Chapabu, 2012-04-11 17:26:47

Я не думаю, что есть какой-то способ. Потому что ваш модуль работает на сервере и никак не может взаимодействовать с браузером клиента.

Вот ответ на stackoverflow: Проверьте, включен ли JavaScript в PHP

 1
Author: karth, 2017-05-23 11:33:47

Я подумал, что вы могли бы сделать что-то в javascript, что вызывает php-страницу на сервере, которая устанавливает переменную сеанса, а затем использует ее в качестве флага, и, конечно же, код для этого находится в статье stackoverflow, цитируемой @karthik...

<html>
  <head>
    <script type="text/javascript" src="jquery1.4.4.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
       $.get("myPage.php");
     });
    </script>
  </head>
</html>

И

<?php
  // not needed for drupal // session_start();
  $_SESSION['js'] = true;
?>

Таким образом, в drupal вы могли бы добавить js в заголовок выше, а затем настроить пункт меню() и обратный вызов, который выполняет php, а затем в своем модуле вы бы проверили, установлена ли переменная сеанса.

Красивая запутанный и, вероятно, более трудоемкий, чем просто ввод

<noscript>
  Our site really works much better with javascript enabled....
</noscript>

На вашей странице.tpl, хотя, имхо...

 0
Author: Jimajamma, 2012-04-11 16:49:47