как проверить, включен ли 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, чтобы я мог запретить своему модулю загружать ненужные материалы?
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>
Находится в файле шаблона, а не просто находится вне функции в вашем модуле.
Я не думаю, что есть какой-то способ. Потому что ваш модуль работает на сервере и никак не может взаимодействовать с браузером клиента.
Вот ответ на stackoverflow: Проверьте, включен ли JavaScript в PHP
Я подумал, что вы могли бы сделать что-то в 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, хотя, имхо...