Проверить включен JavaScript в браузере или
нет очень просто:
<script language="Javascript"><!--
document.write('Yes! JavaScript!');
// --></script>
<noscript>
Your browser can't do JavaScript.
</noscript>
В былые времена этого было достаточно. Но сейчас, когда множество
пользователей используют блокировку всплывающих окон, их браузеры
даже со включенным JavaScript могут не открыть ваши всплывающие
окна. Это весьма неприятно, если вы их используете для отображения
"помощи", описания ваших продуктов, форм или еще чего-нибудь,
столь необходимого для полноценного восприятия вашего сайта.
Теперь с этим будет покончено. Эта статья расскажет, как проверить
позволяет ли браузер посетителя открывать всплывающие окна.
Этот метод не был протестирован со всеми системами блокировки
всплывающих окон. Поэтому, если вы обнаружите, что он не работает
с каким-то сочетанием браузер-блокировка, то пожалуйста сообщите
нам об этом. Вы найдете контактную информацию в конце статьи.
Как это работает:
Ваша страница дает команду браузеру на открытие окна. Приведенный
ниже код определяет, удалось открыть окно или нет.
Основа кода
Первым делом необходимо поместить ниже три приведенных блока кода
JavaScript в раздел HEAD вашей страницы. При этом важно сохранить
их разделенными, поскольку как минимум одна система блокировки
отключает весь код JavaScript, который иначе мог бы отобразить
всплывающее окно. Если же блоки разделены, то только один из них
будет отключен и мы сможем пользоваться оставшимися. Также важно
разместить их в том же порядке, в каком они приведены здесь. Это
обеспечит запуск первого блока перед всеми остальными.
<script language="Javascript"><!--
TestString = 'failed';
// --></script>
<script language="Javascript"><!--
function InitializeTestPopup() {
TestPopup = window.open('','','height=100,width=100');
TestString = TestPopup;
TestPopup.close();
}
// --></script>
<script language="Javascript"><!--
function Verdict() {
if(TestString == 'failed' || TestString == null)
{
alert('No popup was made.');
}
else
{
alert('Yes, browser does popups.');
}
}
// --></script>
Первый блок просто присваивает значение переменной Teststring
Второй блок пытается создать всплывающее окно. Если ему это удается,
то переменной TestString присваивается значение, соответствующее
позиции окна в памяти компьютера (как только значение присвоено,
всплывающее окно закрывается). Если же открыть окно не удастся,
то переменная TestString либо не изменится, либо примет нулевое
значение.
Третий блок может быть модифицирован для выполнения или невыполнения
каких-либо действий в зависимости от того, сможет браузер открыть
окно или нет:
1. Замените строку
alert('No popup was made.');
тем, что будет выполняться в случае, если окно открыть не удастся.
Можно изменить текст сообщения (сообщения должны выдаваться даже
в том случае, если работает блокировка всплывающих окон) или,
например, можно заменить строку на document.write(), чтобы вывести
сообщение на страницу. Чтобы в этом случае вообще ничего не происходило,
замените строку на два слеша: //
2. Замените строку
alert('Yes, browser does popups.');
на код, выполняемый в том случае, если браузер выводит всплывающие
окна. Например, сюда можно вписать функцию для их запуска. Если
вы хотите, чтобы ничего не произошло в данном случае, замените
строку на два слеша //
Запуск проверки блокировки
Функция InitializeTestPopup() должна быть запущена сразу после
загрузки страницы. (Функция InitializeTestPopup() находится во
втором блоке кода в разделе HEAD.) Для этого добавьте атрибут
OnLoad в тэг BODY, делается это так:
<body onLoad="InitializeTestPopup()">
Использование скрипта
Использовать данный скрипт можно двумя способами:
1 - Автозапуск проверки
Если вы хотите запустить проверку и известить об ее результатах
немедленно, то вы можете поместить где-нибуь в разделе BODY следующие
строки:
<script language="Javascript"><!--
setTimeout('Verdict()',1000);
// --></script>
Важно, чтобы браузеру давалась хотя бы одна секунда для создания
и закрытия пробного окна, прежде чем будет вызвана функция Verdict()
В противном случае вы можете получить ложный отрицательный результат,
так как браузер не успеет создать-закрыть окно. Именно поэтому
используется setTimeout() с задержкой в 1000 миллисекунд.
Функция Verdict() может быть использована в исходном виде, если
вы хотите просто получить соответствующее сообщение. Если же вы
хотите, например, автоматически открыть всплывающее окно, то замените
строки:
alert('No popup was made.');
и
alert('Yes, browser does popups.');
на соответствующие действия или поставьте туда два слеша для игнорирования
события.
2 - Запуск проверки блокировки при нажатии ссылки
Если у вас на страничке есть ссылки, которые открывают всплывающие
окна, то вы можете проводить проверку при нажатии на эти ссылки.
Предположим, у вас есть такая ссылка:
<a href="javascript:HelpPopup('Navigation')">
Тогда вы меняете ее сначала на:
<a href="javascript:Verdict()">
затем, заменяете строку в функции Verdict():
alert('No popup was made.');
на:
alert('Sorry, popups must be enabled.');
и меняете строку:
alert('Yes, browser does popups.');
на строку:
HelpPopup('Navigation');
Имеются тысячи различных применений для всплывающих окон. Изучив
приведенный здесь скрипт и примеры его использования, вы сможете
без особых трудностей приспособить свои страницы к современным
условиям.
Весь список
|