Как window location на всю страницу. Разделы на этой странице

Приложение MS Word выделяет некоторые слова документа, прорисовывая линию под ними. Как убрать подчеркивание в Word? Этим вопросом задаются многие пользователи. Способ, которым ликвидируется линия, находящаяся под текстом, зависит от её вида. Существует стандартная форма подчеркивания, задаваемая настройками форматирования, и специальные варианты, автоматически возникающие при наборе документа.

Разобраться, что означает каждый вид выделения текста и как от него избавиться, поможет статья.

Как убрать подчеркивание в Word: настройка форматирования

Подчеркивание возникает после копирования текста из других источников (файлов или веб-сайтов), в некоторых случаях программа выставляет его автоматически. Пример - гиперссылки. По умолчанию приложение, определив, что фрагмент является путём к внешнему ресурсу, перекрашивает его в синий цвет, делает подчёркивание и проставляет ссылку.

Если под словом находится линия, самый простой способ её удалить - изменить параметры начертания текста. Сделать это можно, используя инструмент вкладки "Главная" , который визуально представляется собой кнопку с буквой «Ч ». В англоязычной версии программы этой функции соответствует кнопка «U ».

Вот последовательность действий, которая приведёт к требуемому результату:

  • выделить текст;
  • на вкладке "Главная" сделать неактивной кнопку «Ч », нажав на неё мышкой.

Продвинутые пользователи знают, как убрать подчеркивание в Word быстрым способом, и применяют для его снятия клавиши .

Специальные виды подчеркивания

Встроенная опция проверки правильности написания и расстановки знаков препинания отмечает фрагменты с ошибками линиями разных цветов. Красная волнистая линия означает, что слово написано неверно (или оно не присутствует в словаре Word), зелёная волнистая линия - требуется корректировка знаков препинания.

Есть три способа, как убрать красные подчеркивания в Word.

  • Проверить правильность написания слова и исправить его, если при наборе была допущена опечатка.
  • Навести курсор на слово, нажать правую кнопку мышки и в контекстном меню выбрать один из вариантов, предлагаемых программой.
  • Отказаться от исправления. Для этого также следует навести курсор мышки на слово, нажать правую кнопку и выбрать в меню «Пропустить» или «Добавить в словарь». Слово, включённое пользователем в словарь, впоследствии ошибкой считаться не будет.
  • При орфографической проверке необходимо обратить внимание на язык документа. Например, в русском тексте английские слова программа может принять за неправильно написанные.

    А как убрать зеленое подчеркивание в Word? Ответ: используйте способы, описанные выше. Отличие состоит в том, что приложение обнаружило ошибку грамматики.

    Настройки программы

    Кардинальный способ избавиться от цветных волнистых линий - отключить автопроверку текста. Выполняется эта операции через окно настроек программы. В версии 2007 - щелчок мышкой по логотипу Office, в новых версиях - переход в меню "Файл". Далее необходимо на вкладке "Правописание" убрать отметки в полях «Скрыть ошибки».

    Итак, теперь вопрос о том, как убрать подчеркивание в Word, перестанет тревожить пользователя. Автоматическое исправление отключено. Но есть и минус - искать ошибки в документе придётся вручную.

    В Word можно подчеркнуть надписи, пробелы, знаки табуляции. Доступны разные виды линий: волнистые, прямые, двойные. Ещё есть разделители страниц, таблицы . Красными, зелёными и синими «волнами» программа выделяет ошибки и неправильно оформленный текст. Чтобы пользоваться данным инструментарием, разберитесь, как добавить эти линии, как изменить их атрибуты и как убрать подчёркивание в Word, если его нельзя выделить.

    В редакторе Word есть несколько способов подчеркивания текста. О них мы расскажем ниже.

    Сделать полоску под надписью можно так:

  • Выделите фрагмент.
  • На главной панели меню найдите букву «Ч» с чёрточкой под ней. Или нажмите Ctrl+U. Избавиться от линии можно этим же сочетанием клавиш.
  • Чтобы печатать уже с полосками, кликните на значок «Ч», напишите что-то, и снова кликните на «Ч».
  • Сама операция достаточно проста. Но так можно добавить только обычную черту. Вот как подчеркнуть текст в Word, если вам хочется использовать разные виды и цвета полосок:

  • Выделите фрагмент.
  • Нажмите маленькую стрелочку рядом с буквой «Ч».
  • В выпавшем списке выберите расцветку и тип: двойная линия, штриховая, толстая, волнистая.
  • Чтобы создать полоску, которая будет оставаться на месте, пока над ней печатают текст, нужно сделать следующее:

  • Через раздел «Таблицы» (или Вставка - Таблицы, если у вас Word 2007) добавьте сетку.
  • Напишите в ней пару слов.
  • Кликните по рамке правой кнопкой мыши.
  • «Границы и заливка».
  • Откроются параметры. Справа будет область, в которой есть настройки видимости границ. Оставьте только нижнюю линию. Она останется на месте, даже если вы удалите текст.
  • В этом же меню выберите тип и толщину полоски.
  • Можно сделать проще:

  • После добавления сетки вверху окна появится раздел «Работа с таблицами». В нём перейдите во вкладку «Конструктор».
  • Нажмите стрелку рядом с «Границы».
  • Оставьте активной только опцию «Нижняя граница».
  • Такие полоски нужны при работе с HTML-документами. Этот приём подходит для создания полей ввода и веб-форм.

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

  • Выделите текст.
  • Кликните на чёрную стрелочку рядом с буквой «Ч».
  • Пункт «Другие».
  • В поле «Подчёркивание» выберите «Только слово».
  • Подчёркивание пробелов

    Иногда нужно, чтобы линии находились под пробелами. Например, если вы готовите к печати документ, в котором должно быть место для ввода имени, фамилии или других данных. Для этого подойдут таблицы (взаимодействие с ними описано выше). Но есть и другие способы. Вот как сделать подчёркивание в Word без слов:

  • Самый простой метод - нажмите Shift+[-] (дефис; без скобок). Появится линия. Это не часть оформления, а символ. К нему применимы все настройки шрифта.
  • Чтобы изменить цвет полоски , найдите на панели меню кнопку с пиктограммой в виде буквы «А». Нажмите на стрелочку рядом с ней - откроется палитра.
  • Нижнее подчёркивание не всегда подходит для оформления. Над ним нельзя печатать - он будет сдвигаться. Его сложно выровнять по ширине абзаца. Если у вас активирована автозамена, три линии подряд автоматически превратятся в границу.

    В Word можно добавить полосы к знакам табуляции. Их разметку легче настроить.

  • Нажмите клавишу «TAB». Она находится над кнопкой Caps Look. Курсор Word сдвинется.
  • Лучше активировать отображение скрытых символов, чтобы видеть знаки табуляции, а не только набор слов. Для этого кликните на панели инструментов на иконку, похожую на букву «П» (кнопка называется «Абзац»). Или нажмите Ctrl+Shift+* (звёздочка). Табуляция в Word выглядит как стрелочка, указывающая вправо.
  • Выделите её.
  • Нажмите Ctrl+U.
  • Печатать над такими линиями тоже не получится. Но они гораздо шире пробелов - с ними будет легче выровнять строку.

    Границы страниц

    Если в Word ввести три звёздочки или три дефиса подряд, они могут стать горизонтальной линией (иногда для этого надо нажать Enter). Это автозамена превращает их в границу страницы . Чтобы создать определённый вид такой линии, надо сделать так:

    • Введите три знака равенства (=), чтобы создать двойную полосу.
    • Три звёздочки (*) - пунктирную.
    • Три дефиса (-) - простую.
    • Три нижних пробела (_) - жирную.

    Данные границы похожи на обычное подчёркивание. Они занимают всю строку. Их нельзя выделить или отредактировать. Но над ними можно печатать.

    Вот как убрать подобную линию:

  • Поставьте курсор Word в начало строки с полоской.
  • Нажмите Delete.
  • Если этот способ не поможет, лучше сделать так:

  • Раздел «Разметка страницы». Он находится в строке меню наверху окна.
  • Кнопка «Границы страниц».
  • В поле «Тип» задайте параметр «Нет». Горизонтальная линия пропадёт.
  • Красное, зелёное и синее подчёркивание - проверка орфографии

    В Word есть функция проверки орфографии . Она отмечает волнистыми линиями ошибки орфографии, пунктуации, стилистики. С ней легче заметить случайную опечатку, проверить текст, найти какие-то недоработки. Ниже указано, что означает каждая полоса.

    • Красная. Неправильно написано слово, или его нет в базе данных Office. Красным цветом также обозначаются повторы.
    • Зелёная. Ошибки с грамматикой, стилистикой, пунктуацией. Лишние скобки. Несогласованный текст.
    • Синяя. Несоответствие формата.

    Обычно эта функция приносит пользу. Но если вы правильно всё написали, то внезапно появившиеся волнистые линии будут раздражать и мешать. Как убрать подчёркивание в Word, если оно поставлено автоматически при проверке орфографии:

  • Кликните правой кнопкой мыши на фрагмент, под которым появилась волнистая линия.
  • Чтобы избавиться от неё, выберите пункт «Пропустить».
  • Чтобы Word запомнил выбранное слово и записал его в свой словарь, нажмите «Добавить».
  • Если вы хотите совсем отключить проверку, откройте настройки:

  • Перейдите в меню Сервис - Правописание (в Word 2007 для этого надо нажать на логотип Office в левом верхнем углу и в выпавшем списке выбрать «Параметры»).
  • Уберите галочку в «Автоматически проверять орфографию» или отметьте «Скрыть ошибки только в этом документе». Автопроверка перестанет вам докучать. Но искать опечатки будет сложнее.
  • В инструментарии Word найдутся разнообразные типы линий, чтобы подчеркнуть текст или нарисовать горизонтальную полосу. Используйте эти функции, чтобы оформлять документы.

    В этой статье мы покажем, как можно организовать перенаправление со страницы, используя JavaScript location . Неожиданные перенаправления считаются очень раздражающими с точки зрения пользователей, поскольку они отрицательно влияют на общее впечатление. Например, если вы перенаправляете пользователей на другой сайт сразу после их перехода на ваш. Также, если вы направите на постороннюю страницу по таймеру или после того, как они совершили определенное действие. Это приведет к тому, что пользователь захочет сразу же покинуть ваш сайт.

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

    Методы переадресации JavaScript

    В JavaScript window location или объект location используется, чтобы получить информацию о местоположении текущей веб-страницы (документа ), а также для его изменения. Ниже приведен список способов, которые могут быть использованы для реализации переадресации JavaScript :

    //Устанавливает новое местоположение текущего окна. window.location = "http://www.example.com"; //Устанавливает новую гиперссылку (URL) для текущего окна. window.location.href = "http://www.example.com"; // Присваивает новый URL текущему окну. window.location.assign("http://www.example.com"); //Заменяет положение текущего окна на новое. window.location.replace("http://www.example.com"); //Задает местоположение самого текущего окна. self.location = "http://www.example.com"; // Задает положение самого верхнего окна относительно текущего. top.location = "http://www.example.com";

    Хотя приведенные выше строки JavaScript кода выполняют схожую работу, у них есть небольшие отличия. Например, если вы используете перенаправление top.location внутри элемента iframe , то это принудительно перенаправит на главное окно. Еще один момент, о котором стоит помнить: location.replace() заменяет текущий документ, удаляя его из истории и делая его недоступным с помощью кнопки «Назад » в браузере.

    window.location.href = "http://www.example.com";

    Также вы можете зайти на эту страницу, чтобы подробнее узнать, как работает window.location .

    Переадресация JavaScript: перенаправление при загрузке

    Чтобы перенаправить пользователя на другой веб-сайт сразу же после открытия вашего сайта, можно использовать следующий код вверху вашей страницы, внутри элемента . Или, если вы используете отдельный .js файл , поместите следующий код в этот файл и не забудьте сослаться на него в заголовке вашей страницы:

    window.location.href = "http://www.example.com";

    Просто замените URL-адрес из примера на тот адрес, куда вы хотите перенаправлять. Следует отметить, что при этом виде переадресации, посетители вообще не увидят вашу веб-страницу и будут моментально перенаправлены на целевой адрес.

    Переадресация JavaScript: перенаправление после определенного периода времени

    Чтобы перенаправить пользователя на другой сайт после определенного периода времени, можно использовать следующий код:

    setTimeout(function() { window.location.href = "http://www.example.com"; }, 3000);

    Функция JavaScript location href , приведенная выше, перенаправит пользователя со страницы через 3 секунды после полной загрузки. Вы можете изменить значение 3000 (3 x 1000 в миллисекундах ) на свое усмотрение.

    Переадресация JavaScript: перенаправление со страницы после события или действия пользователя

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

    // Проверяем, верно ли условие, и затем перенаправляем. if (...) { window.location.href = "http://www.example.com"; }

    Приведенный выше код JavaScript document location href выполнит перенаправление, если условие верно:

    // событие onclick присвоено элементу #button. document.getElementById("button").onclick = function() { window.location.href = "http://www.example.com"; };

    Приведенный выше код выполнит перенаправление, когда пользователь нажмет на элемент #button .

    Так работает переадресация в JavaScript . Надеемся, эти примеры помогут вам в организации переадресации веб-страниц.

    Перевод статьи «JavaScript Redirect: How to Redirect a Web Page with JavaScript » был подготовлен дружной командой проекта .

    Хорошо Плохо

      В этой статье я расскажу, как можно перенаправить пользователя с одной веб-страницы на другую с помощью JavaScript. А также приведу несколько простых примеров JS…

    Объект Window

    Объект Window является центром прикладных интерфейсов клиентского JavaScript. Он представляет окно веб-браузера или фрейм, а сослаться на него можно с помощью идентификатора window . Объект Window определяет свойства, такие как location, которое ссылается на объект Location, определяющий URL текущего окна и т.п.

    Кроме того, объект Window определяет методы, такие как alert(), который отображает диалог с сообщением, и setTimeout(), который регистрирует функцию для вызова через указанный промежуток времени.

    Объект Window в клиентском JavaScript является глобальным объектом. Это означает, что объект Window находится на вершине цепочки областей видимости и что его свойства и методы фактически являются глобальными переменными и функциями. Объект Window имеет свойство window, которое всегда ссылается на сам объект. Это свойство можно использовать для ссылки на сам объект, но обычно в этом нет необходимости, если требуется просто сослаться на свойство глобального объекта окна.

    Объект Window определяет также множество других важных свойств, методов и конструкторов, которое мы и рассмотрим ниже.

    Таймеры

    Функции setTimeout() и setInterval() позволяют зарегистрировать функцию, которая будет вызываться один или более раз через определенные интервалы времени. Это очень важные функции для клиентского JavaScript, и поэтому они были определены как методы объекта Window, несмотря на то что являются универсальными функциями, не выполняющими никаких действий с окном.

    Метод setTimeout() объекта Window планирует запуск функции через определенное число миллисекунд. Метод setTimeout() возвращает значение, которое может быть передано методу clearTimeout() , чтобы отменить запланированный ранее запуск функции.

    Метод setInterval() похож на setTimeout(), за исключением того, что он автоматически заново планирует повторное выполнение через указанное количество миллисекунд:

    SetInterval(updateClock, 60000); // Вызывать updateClock() через каждые 60 сек

    Подобно setTimeout(), метод setInterval() возвращает значение, которое может быть передано методу clearInterval() , чтобы отменить запланированный запуск функции.

    В следующем примере определяется вспомогательная функция, которая ожидает указанный интервал времени, многократно вызывает указанную функцию и затем отменяет запланированные вызовы по истечении другого заданного интервала времени. Этот пример демонстрирует использование методов setTimeout(), setInterval() и clearInterval():

    /* * Планирует вызов или вызовы функции f() в будущем. * Ожидает перед первым вызовом start миллисекунд, затем вызывает f() * каждые interval миллисекунд и останавливается через start+end миллисекунд. * Если аргумент interval указан, а аргумент end нет, повторяющиеся вызовы функции f * никогда не прекратятся. Если отсутствуют оба аргумента, interval и end, * тогда функция f будет вызвана только один раз, через start миллисекунд. * Если указан только аргумент f, функция будет вызвана немедленно, как если бы * в аргументе start было передано число 0. Обратите внимание, что вызов invoke() * не блокируется: она сразу же возвращает управление. */ function invoke(f, start, interval, end) { if (!start) start = 0; // По умолчанию через 0 мс if (arguments.length

    По исторически сложившимся причинам в первом аргументе методам setTimeout() и setInterval() допускается передавать строку. В этом случае строка будет интерпретироваться (как с применением функции eval()) через указанный интервал времени. Спецификация HTML5 (и все браузеры, кроме IE) допускает передавать методам setTimeout() и setInterval() дополнительные аргументы после первых двух. Все эти дополнительные аргументы будут передаваться функции, вызов которой планируется этими методами. Однако если требуется сохранить совместимость с IE, эту возможность использовать не следует.

    Если методу setTimeout() указать величину интервала 0 миллисекунд, указанная функция будет вызвана не сразу, а «как только такая возможность появится», т.е. как только завершат работу все обработчики событий.

    Адрес документа и навигация по нему

    Свойство location Location , представляющий текущий URL-адрес документа, отображаемого в окне и определяющий методы, инициирующие загрузку нового документа в окно.

    Свойство location объекта Document также ссылается на объект Location:

    Window.location === document.location; // всегда верно

    Кроме того, объект Document имеет свойство URL, хранящее статическую строку с адресом URL документа. При перемещении по документу с использованием идентификаторов фрагментов (таких как «#table-of-contents») внутри документа объект Location будет обновляться, отражая факт перемещения, но свойство document.URL останется неизменным.

    Анализ URL

    Свойство location окна является ссылкой на объект Location и представляет URL-адрес документа, отображаемого в данный момент в текущем окне. Свойство href объекта Location - это строка, содержащая полный текст URL-адреса. Метод toString() объекта Location возвращает значение свойства href, поэтому в контекстах, где неявно подразумевается вызов метода toString(), вместо конструкции location.href можно писать просто location.

    Другие свойства этого объекта, такие как protocol , host , hostname , port , pathname , search и hash , определяют отдельные части URL-адреса. Они известны как свойства «декомпозиции URL» и также поддерживаются объектами Link (которые создаются элементами и в HTML-документах).

    Свойства hash и search объекта Location представляют особый интерес. Свойство hash возвращает «идентификатор фрагмента» из адреса URL, если он имеется: символ решетки (#) со следующим за ним идентификатором. Свойство search содержит часть URL-адреса, следующую за вопросительным знаком, если таковая имеется, включая сам знак вопроса. Обычно эта часть URL-адреса является строкой запроса. В целом эта часть URL-адреса используется для передачи параметров и является средством встраивания аргументов в URL-адрес.

    Хотя эти аргументы обычно предназначены для сценариев, выполняющихся на сервере, нет никаких причин, по которым они не могли бы также использоваться в страницах, содержащих JavaScript-код. В примере ниже приводится определение универсальной функции urlArgs(), позволяющей извлекать аргументы из свойства search URL-адреса. В примере используется глобальная функция decodeURIComponent(), имеющаяся в клиентском JavaScript:

    /* * Эта функция выделяет в URL-адресе разделенные амперсандами * пары аргументов имя/значение из строки запроса. Сохраняет эти пары * в свойствах объекта и возвращает этот объект. Порядок использования: * * var args = urlArgs(); // Извлечь аргументы из URL * var q = args.q || ""; // Использовать аргумент, если определен, или значение по умолчанию * var n = args.n ? parseInt(args.n) : 10; */ function urlArgs() { var args = {}; // Создать пустой объект var query = location.search.substring(1); // Строка запроса без "?" var pairs = query.split("&"); // Разбить по амперсандам for(var i = 0; i

    Загрузка нового документа

    Метод assign() объекта Location заставляет окно загрузить и отобразить документ по указанному URL-адресу. Метод replace() выполняет похожую операцию, но перед открытием нового документа он удаляет текущий документ из списка посещавшихся страниц.

    Когда сценарию просто требуется загрузить новый документ, часто предпочтительнее использовать метод replace(), а не assign(). В противном случае кнопка Back (Назад) браузера вернет оригинальный документ и тот же самый сценарий снова загрузит новый документ. Метод location.replace() можно было бы использовать для загрузки версии веб-страницы со статической разметкой HTML, если сценарий обнаружит, что браузер пользователя не обладает функциональными возможностями, необходимыми для отображения полноценной версии:

    // Если браузер не поддерживает объект XMLHttpRequest, выполнить // переход к статической странице, которая не использует его if (!XMLHttpRequest) location.replace("static_page.html");

    Примечательно, что строка URL-адреса в этом примере, переданная методу replace(), представляет относительный адрес. Относительные URL-адреса интерпретируются относительно страницы, в которой они появляются, точно так же, как если бы они использовались в гиперссылке.

    Кроме методов assign() и replace() объект Location определяет также метод reload() , который заставляет браузер перезагрузить документ. Однако более традиционный способ заставить браузер перейти к новой странице заключается в том, чтобы просто присвоить новый URL-адрес свойству location:

    Location = "http://www.сайт";

    История посещений

    Свойство history объекта Window ссылается на объект History данного окна. Объект History хранит историю просмотра страниц в окне в виде списка документов и сведений о них. Свойство length объекта History позволяет узнать количество элементов в списке, но по причинам, связанным с безопасностью, сценарии не имеют возможности получить хранящиеся в нем URL-адреса. (Иначе любой сценарий смог бы исследовать историю посещения веб-сайтов.)

    Методы back() и forward() действуют подобно кнопкам Back (Назад) и Forward (Вперед) браузера: они заставляют браузер перемещаться на один шаг назад и вперед по истории просмотра данного окна. Третий метод, go() , принимает целочисленный аргумент и пропускает заданное число страниц, двигаясь вперед (если аргумент положительный) или назад (если аргумент отрицательный) в списке истории:

    // Переход назад на 2 элемента, как если бы пользователь // дважды щелкнул на кнопке Back (Назад) history.go(-2);

    Если окно содержит дочерние окна (такие как элементы ), истории посещений в дочерних окнах хронологически чередуются с историей посещений в главном окне. То есть вызов history.back() (например) в главном окне может вызвать переход назад, к ранее отображавшемуся документу, в одном из дочерних окон, оставив главное окно в текущем состоянии.

    Современные веб-приложения способны динамически изменять содержимое страницы без загрузки нового документа. Приложениям, действующим подобным образом, может потребоваться предоставить пользователям возможность использовать кнопки Back и Forward для перехода между этими динамически созданными состояниями приложения.

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

    Один из приемов реализации такого поведения опирается на использование скрытого элемента , в котором сохраняется информация о состоянии и создаются записи в списке истории просмотра. Чтобы создать новую запись, в этот скрытый фрейм динамически записывается новый документ, с помощью методов open() и write() объекта Document. Документ должен включать всю информацию, необходимую для воссоздания соответствующего состояния приложения. Когда пользователь щелкнет на кнопке Back, содержимое скрытого фрейма изменится. До появления стандарта HTML5 не предусматривалось никаких событий, которые извещали бы об этом изменении, поэтому, чтобы определить момент щелчка на кнопке Back, приходилось использовать функцию setInterval() и с ее помощью 2-3 раза в секунду проверять наличие изменений в скрытом фрейме.

    Однако на практике разработчики, когда требуется реализовать подобное управление историей просмотра, предпочитают использовать готовые решения. Многие фреймворки JavaScript включают такие решения. Например, для библиотеки jQuery существует расширение history. Существуют также автономные библиотеки управления историей. Например, одной из наиболее популярных является библиотека RSH (Really Simple History - действительно простое управление историей).

    Информация о браузере и об экране

    Иногда сценариям бывает необходимо получить информацию о веб-браузере, в котором они выполняются, или об экране, на котором отображается браузер. В этом разделе описываются свойства navigator и screen объекта Window. Эти свойства ссылаются, соответственно, на объекты Navigator и Screen, содержащие информацию, которая дает возможность подстроить поведение сценария под существующее окружение.

    Объект Navigator

    Свойство navigator объекта Window ссылается на объект Navigator, содержащий общую информацию о номере версии и о производителе браузера. Объект Navigator назван «в честь» браузера Netscape Navigator, но он также поддерживается во всех других браузерах. (Кроме того, IE поддерживает свойство clientInformation как нейтральный синоним для navigator. К сожалению, другие браузеры свойство с таким именем не поддерживают.)

    В прошлом объект Navigator обычно использовался сценариями для определения типа браузера - Internet Explorer или Netscape. Однако такой подход к определению типа браузера сопряжен с определенными проблемами, т.к. требует постоянного обновления с появлением новых браузеров или новых версий существующих браузеров. Ныне более предпочтительным считается метод на основе проверки функциональных возможностей. Вместо того чтобы делать какие-либо предположения о браузерах и их возможностях, гораздо проще прямо проверить наличие требуемой функциональной возможности (например, метода или свойства).

    Однако иногда определение типа браузера может представлять определенную ценность. Один из таких случаев - возможность обойти ошибку, свойственную определенному типу браузера определенной версии. Объект Navigator имеет четыре свойства, предоставляющих информацию о версии работающего браузера, и вы можете использовать их для определения типа браузера:

    navigator.appName

    Название веб-браузера. В IE это строка «Microsoft Internet Explorer». В Firefox значением этого свойства является строка «Netscape». Для совместимости с существующими реализациями определения типа браузера значением этого свойства в других браузерах часто является строка «Netscape».

    navigator.appVersion

    Обычно значение этого свойства начинается с номера версии, за которым следует другая информация о версии браузера и его производителе. Обычно в начале строки указывается номер 4.0 или 5.0, свидетельствующий о совместимости с четвертым или пятым поколением браузеров. Формат строки в свойстве appVersion не определяется стандартом, поэтому невозможно организовать разбор этой строки способом, не зависящим от типа браузера.

    navigator.userAgent

    Строка, которую браузер посылает в http-заголовке USER-AGENT. Это свойство обычно содержит ту же информацию, что содержится в свойстве appVersion, а также может включать дополнительные сведения. Как и в случае со свойством appVersion, формат представления этой информации не стандартизован. Поскольку это свойство содержит больше информации, именно оно обычно используется для определения типа браузера.

    navigator.platform

    Строка, идентифицирующая операционную систему (и, возможно, аппаратную платформу), в которой работает браузер.

    Сложность свойств объекта Navigator делает невозможной универсальную реализацию определения типа браузера. На раннем этапе развития Всемирной паутины было написано немало программного кода, зависящего от типа браузера, проверяющего свойства, такие как navigator.appName. Создавая новые браузеры, производители обнаружили, что для корректного отображения содержимого существующих веб-сайтов они должны устанавливать значение «Netscape» в свойстве appName. По тем же причинам потерял свою значимость номер в начале значения свойства appVersion, и в настоящее время реализация определения типа браузера должна опираться на строку в свойстве navigator.userAgent, имеющую более сложный формат, чем ранее.

    Пример ниже демонстрирует, как с помощью регулярных выражений можно получить из свойства navigator.userAgent название браузера и номер версии:

    // Определяет свойства browser.name и browser.version, позволяющие выяснить // тип клиента. Оба свойства, name и version, возвращают строки, и // в обоих случаях значения могут отличаться от фактических // названий браузеров и версий. Определяются следующие названия браузеров: // "webkit": Safari или Chrome; version содержит номер сборки WebKit // "opera": Opera; version содержит фактический номер версии браузера // "mozilla": Firefox или другие браузеры, основанные на механизме gecko; // version содержит номер версии Gecko // "msie": IE; version содержит фактический номер версии браузера var browser = (function() { var s = navigator.userAgent.toLowerCase(); var match = /(webkit)[ \/]([\w.]+)/.exec(s) || /(opera)(?:.*version)?[ \/]([\w.]+)/.exec(s) || /(msie) ([\w.]+)/.exec(s) || !/compatible/.test(s) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec(s) || ; return { name: match || "", version: match || "0" }; } ()); window.onload = function() { console.log("Версия браузера %s %s", browser.name, browser.version); };

    В дополнение к свойствам с информацией о версии и производителе браузера, объект Navigator имеет еще несколько свойств и методов. В число стандартных и часто реализуемых нестандартных свойств входят:

    navigator.onLine

    Свойство navigator.onLine (если существует) определяет, подключен ли браузер к сети. Приложениям может потребоваться сохранять информацию о состоянии локально, если браузер не подключен к сети.

    navigator.geolocation

    Объект Geolocation, определяющий API для выяснения географического положения пользователя.

    navigator.javaEnabled()

    Нестандартный метод, который должен возвращать true, если браузер способен выполнять Java-апплеты.

    navigator.cookiesEnabled()

    Нестандартный метод, который должен возвращать true, если браузер способен сохранять cookies. Если браузер настроен на сохранение cookies только для определенных сайтов, этот метод может возвращать некорректное значение.

    Объект Screen

    Свойство screen объекта Window ссылается на объект Screen, предоставляющий информацию о размере экрана на стороне пользователя и доступном количестве цветов. Свойства width и height возвращают размер экрана в пикселах. Свойства availWidth и availHeight возвращают фактически доступный размер экрана; из них исключается пространство, требуемое для таких графических элементов, как панель задач. Свойство colorDepth возвращает количество битов на пиксел, определяющих цвет. Типичными значениями являются 16, 24 и 32.

    Свойство window.screen и объект Screen, на который оно ссылается, являются нестандартными, но они реализованы практически во всех браузерах. Объект Screen можно использовать, чтобы определить, не выполняется ли веб-приложение на устройстве с маленьким экраном, таком как нетбук. При ограниченном пространстве экрана, например, можно было бы использовать шрифты меньшего размера и маленькие изображения.

    Диалоговые окна

    Объект Window обладает тремя методами для отображения простейших диалоговых окон. Метод alert() выводит сообщение и ожидает, пока пользователь закроет диалоговое окно. Метод confirm() предлагает пользователю щелкнуть на кнопке OK или Cancel (Отмена) и возвращает логическое значение. Метод prompt() выводит сообщение, ждет ввода строки пользователем и возвращает эту строку. Ниже демонстрируется пример использования всех трех методов:

    Do { var name = prompt("Введите ваше имя"); // Вернет строку var correct = confirm("Вы ввели "" + name + "".\n" + // Вернет логич. знач. "Щелкните ОК, чтобы продолжить, или Отмена, чтобы повторить ввод."); } while(!correct) alert("Привет, " + name); // Выведет простое сообщение

    Методы alert(), confirm() и prompt() чрезвычайно просты в использовании, но правила хорошего дизайна требуют, чтобы они применялись как можно реже. Диалоги, подобные этим, нечасто используются в Веб, и большинство пользователей сочтет диалоговые окна, выводимые этими методами, выпадающими из обычной практики. Единственный вариант, когда имеет смысл обращаться к этим методам - это отладка. JavaScript-программисты часто вставляют вызов метода alert() в программный код, пытаясь диагностировать возникшие проблемы.

    Обратите внимание, что текст, отображаемый методами alert(), confirm() и prompt() в диалогах - это обычный неформатированный текст. Его можно форматировать только пробелами, переводами строк и различными знаками пунктуации.

    Методы confirm() и prompt() являются блокирующими, т.е. они не возвращают управление, пока пользователь не закроет отображаемые ими диалоговые окна. Это значит, что, когда выводится одно из этих окон, программный код прекращает выполнение, и текущий загружаемый документ, если таковой существует, прекращает загружаться до тех пор, пока пользователь не отреагирует на запрос. В большинстве браузеров метод alert() также является блокирующим и ожидает от пользователя закрытия диалогового окна, но это не является обязательным требованием.

    В дополнение к методам alert(), confirm() и prompt() в объекте Window имеется более сложный метод, showModalDialog() , отображающий модальный диалог, содержащий разметку HTML, и позволяющий передавать аргументы и получать возвращаемое значение.

    Метод showModalDialog() выводит модальный диалог в отдельном окне браузера. Первым аргументом методу передается URL, определяющий HTML-содержимое диалога. Во втором аргументе может передаваться произвольное значение (допускается передавать массивы и объекты), которое будет доступно сценарию в диалоге, как значение свойства window.dialogArguments. Третий аргумент - нестандартный список пар имя/значение, разделенных точками с запятой, который, если поддерживается, может использоваться для настройки размеров и других атрибутов диалогового окна. Для определения размеров окна диалога можно использовать параметры «dialogwidth» и «dialogheight», а чтобы позволить пользователю изменять размеры окна, можно определить параметр «resizable=yes».

    Окно, отображаемое эти методом, является модальным, и метод showModalDialog() не возвращает управление, пока окно не будет закрыто. После закрытия окна значение свойства window.returnValue становится возвращаемым значением метода. Обычно разметка HTML диалога должна включать кнопку OK, которая записывает желаемое значение в свойство returnValue и вызывает window.close().

    В примере ниже приводится разметка HTML для использования с методом showModalDialog(). Комментарий в начале примера включает пример вызова showModalDialog(), а на рисунке показано диалоговое окно, созданное вызовом из примера. Обратите внимание, что большая часть текста, отображаемого в окне, передается методу showModalDialog() во втором аргументе, а не является жестко определенной частью разметки HTML:

    Ok Отмена // Создает разметку HTML диалогового окна и отображает ее в элементе fieldset var args = dialogArguments; var text = "" + args + ""; for(var i = 1; i < args.length; i++) text += "" + args[i] + ":
    "; document.getElementById("fields").innerHTML = text; // Закрывает диалоговое окно без установки возвращаемого значения function cancel() { window.close(); } // Читает значения полей ввода и устанавливает возвращаемое значение, // затем закрывает окно function ok() { window.returnValue = ; // Возвращаемый массив for(var i = 1; i < args.length; i++) // Значения элементов из полей ввода window.returnValue = document.getElementById("f" + i).value; window.close(); // Закрыть диалоговое окно. Это заставит showModalDialog() вернуть управление. }

    Обработка ошибок

    Свойство onerror объекта Window - это обработчик событий, который вызывается во всех случаях, когда необработанное исключение достигло вершины стека вызовов и когда браузер готов отобразить сообщение об ошибке в консоли JavaScript. Если присвоить этому свойству функцию, функция будет вызываться всякий раз, когда в окне будет возникать ошибка выполнения программного кода JavaScript: присваиваемая функция станет обработчиком ошибок для окна.

    Исторически сложилось так, что обработчику события onerror объекта Window передается три строковых аргумента, а не единственный объект события, как в других обработчиках. (Другие объекты в клиентском JavaScript также имеют обработчики onerror, обрабатывающие различные ошибочные ситуации, но все они являются обычными обработчиками событий, которым передается единственный объект события.) Первый аргумент обработчика window.onerror - это сообщение, описывающее произошедшую ошибку. Второй аргумент - это строка, содержащая URL-адрес документа с JavaScript-кодом, приведшим к ошибке. Третий аргумент - это номер строки в документе, где произошла ошибка.

    Помимо этих трех аргументов важную роль играет значение, возвращаемое обработчиком onerror. Если обработчик onerror возвращает true, это говорит браузеру о том, что ошибка обработана и никаких дальнейших действий не требуется; другими словами, браузер не должен выводить собственное сообщение об ошибке. К сожалению, по историческим причинам в Firefox обработчик ошибок должен возвращать true, чтобы сообщить о том, что ошибка обработана.

    Обработчик onerror является пережитком первых лет развития JavaScript, когда в базовом языке отсутствовала инструкция try/catch обработки исключений. В современном программном коде этот обработчик используется редко.

    Элементы документа как свойства окна

    Если для именования элемента в HTML-документе используется атрибут id и если объект Window еще не имеет свойства, имя которого совпадает со значением этого атрибута, объект Window получает неперечислимое свойство с именем, соответствующим значению атрибута id, значением которого становится объект HTMLElement, представляющий этот элемент документа.

    Как вы уже знаете, объект Window играет роль глобального объекта, находящегося на вершине цепочки областей видимости в клиентском JavaScript. Таким образом, вышесказанное означает, что атрибуты id в HTML-документах становятся глобальными переменными, доступными сценариям. Если, например, документ включает элемент , на него можно сослаться с помощью глобальной переменной ok.

    Однако важно отметить, что этого не происходит, если объект Window уже имеет свойство с таким именем. Элементы с атрибутами id, имеющими значение «history», «location» или «navigator», например, не будут доступны через глобальные переменные, потому что эти имена уже используются. Аналогично, если HTML-документ включает элемент с атрибутом id, имеющим значение «x» и в сценарии объявляется и используется глобальная переменная x, явно объявленная переменная скроет неявную переменную, ссылающуюся на элемент.

    Если переменная объявляется в сценарии, который в документе находится выше именованного элемента, наличие переменной будет препятствовать появлению нового свойства окна. А если переменная объявляется в сценарии, который находится ниже именованного элемента, первая же инструкция присваивания значения этой переменной затрет значение неявно созданного свойства.

    Неявное использование идентификаторов элементов в качестве глобальных переменных - это пережиток истории развития веб-браузеров. Эта особенность необходима для сохранения обратной совместимости с существующими веб-страницами, но использовать ее сейчас не рекомендуется - в любой момент производители браузеров могут определить новое свойство в объекте Window, что нарушит работу любого программного кода, использующего неявно определяемое свойство с этим именем. Поиск элементов лучше выполнять явно, с помощью метода document.getElementById().

    Открытие и закрытие окон

    Открыть новое окно веб-браузера (или вкладку, что обычно зависит от настроек браузера) можно с помощью метода open() объекта Window. Метод Window.open() загружает документ по указанному URL-адресу в новое или в существующее окно и возвращает объект Window, представляющий это окно. Он принимает четыре необязательных аргумента:

      Первый аргумент open() - это URL-адрес документа, отображаемого в новом окне. Если этот аргумент отсутствует (либо является пустой строкой), будет открыт специальный URL пустой страницы about:blank.

      Второй аргумент open() - это строка с именем окна. Если окно с указанным именем уже существует (и сценарию разрешено просматривать содержимое этого окна), используется это существующее окно. Иначе создается новое окно и ему присваивается указанное имя. Если этот аргумент опущен, будет использовано специальное имя «_blank», т.е. будет открыто новое неименованное окно.

      Обратите внимание, что сценарии не могут просто так указывать имена окон и не могут получать контроль над окнами, используемыми другими веб-приложениями: они могут указывать имена только тех существующих окон, которыми им «разрешено управлять» (термин взят из спецификации HTML5). Проще говоря, сценарий может указать имя существующего окна, только если это окно содержит документ, происходящий из того же источника, или если это окно было открыто самим сценарием (или рекурсивно открытым окном, которое открыло это окно).

      Кроме того, если одно окно является фреймом, вложенным в другое окно, сценарии в любом из них получают возможность управлять другим окном. В этом случае можно использовать зарезервированные имена «_top» (для обозначения вмещающего окна верхнего уровня) и «_parent» (для обозначения ближайшего вмещающего окна).

      Третий необязательный аргумент open() - это список параметров, определяющих размер и видимые элементы графического пользовательского интерфейса нового окна. Если опустить этот аргумент, окно получает размер по умолчанию и полный набор графических элементов: строку меню, строку состояния, панель инструментов и т.д. В браузерах, поддерживающих вкладки, это обычно приводит к созданию новой вкладки. Этот третий аргумент является нестандартным, и спецификация HTML5 требует, чтобы браузеры игнорировали его.

      Указывать четвертый аргумент open() имеет смысл, только если второй аргумент определяет имя существующего окна. Этот аргумент - логическое значение, определяющее, должен ли URL-адрес, указанный в первом аргументе, заменить текущую запись в истории просмотра окна (true) или требуется создать новую запись (false). Если этот аргумент опущен, используется значение по умолчанию false.

    Значение, возвращаемое методом open(), является объектом Window, представляющим вновь созданное окно. Этот объект позволяет сослаться в JavaScript-коде на новое окно так же, как исходный объект Window ссылается на окно, в котором выполняется сценарий:

    Window.onload = function() { var w = window.open(); // Открыть новое пустое окно w..location = "http://сайт"; // Установить св-во location };

    В окнах, созданных методом window.open(), свойство opener ссылается на объект Window сценария, открывшего его. В других случаях свойство opener получает значение null:

    W.opener !== null; // Верно для любого окна w, созданного методом open() w.open().opener === w; // Верно для любого окна

    Метод Window.open() часто используется рекламодателями для создания «всплывающих окон» с рекламой, когда пользователь путешествует по Всемирной паутине. Такие всплывающие окна могут раздражать пользователя, поэтому большинство веб-браузеров реализуют механизм блокирования всплывающих окон. Обычно вызов метода open() преуспевает, только если он производится в ответ на действия пользователя, такие как щелчок мышью на кнопке или на ссылке. Попытка открыть всплывающее окно, которая производится, когда браузер просто загружает (или выгружает) страницу, как в приведенном примере, обычно оканчивается неудачей.

    Новое окно открывается при помощи метода open() и закрывается при помощи метода close() . Если объект Window был создан сценарием, то этот же сценарий сможет закрыть его следующей инструкцией:

    Отношения между фреймами

    Мы уже видели, что метод open() объекта Window возвращает новый объект Window, свойство opener которого ссылается на первоначальное окно. Таким образом, два окна могут ссылаться друг на друга, и каждое из них может читать свойства и вызывать методы другого. То же самое возможно для фреймов. Сценарий, выполняющийся в окне или фрейме, может ссылаться на объемлющее или вложенное окно или фрейм при помощи свойств, описываемых ниже.

    Как вы уже знаете, сценарий в любом окне или фрейме может сослаться на собственное окно или фрейм с помощью свойства window или self. Фрейм может сослаться на объект Window вмещающего окна или фрейма с помощью свойства parent .

    Если фрейм находится внутри другого фрейма, содержащегося в окне верхнего уровня, то он может сослаться на окно верхнего уровня так: parent.parent. Однако в качестве универсального сокращения имеется свойство top : независимо от глубины вложенности фрейма его свойство top ссылается на содержащее его окно самого верхнего уровня.

    • классификация объектов JavaScript;
    • объекты браузера;
    • объект location ;
    • свойства и методы объекта location ;
    • объект history ;
    • свойства и методы объекта history ;
    • объект navigator ;
    • свойства объекта navigator ;
    • отступление: определение браузера;
    • методы объекта navigator ;
    • объект screen ;
    • свойства объекта screen .
    «Словарный запас» JavaScript

    До сих пор мы изучали ЯДРО JavaScript, чтобы понять, КАК он работает. В третьей части мы в первую очередь займёмся его окружением — тем, С ЧЕМ работает JavaScript. Образно говоря, изучив основы «грамматики», мы начинаем наращивать «словарный запас».

    Конечно, чтобы сделать работающие скрипты, мы «выглядывали наружу» из ядра, но наши «вылазки» не носили систематического характера. Теперь пора привести в систему те объекты, с которыми мы невольно сталкивались.

    Объекты, с которыми работает JavaScript, можно условно разделить на 2 категории:

    1. Встроенные объекты (собственно объекты ядра ), с которыми мы уже познакомились достаточно подробно.

    2. Клиентские объекты , «родителем» которых является объект window . Их тоже можно условно разделить на 2 категории:

    а). Объекты браузера . К ним относятся элементы интерфейса браузера — окно, показывающее web-страницу, панели инструментов, строка состояния, полосы прокрутки, а такде информация о типе и версии браузера.

    б). Объекты HTML-документа (или XML-документа) — все те элементы, которые указаны в коде web-страницы.

    Таинственный невидимый объект Global — прототип всех объектов JavaScript.

    Левая ветка — ядро, объект Object — прародитель всех встроенных объектов (объектов ядра).

    Правая ветка — клиентские объекты , с которыми работает JavaScript. Мы уже немного прикоснулись к их пращуру — объекту window — во второй части (уроки , , , ).

    Объекты web-страницы, заключённые в объект document , представляют собой иерархию DOM — Document Object Model (объектная модель документа). Изучению этой огромной, необъятной модели и будет посвящено большинство уроков третьей части.

    Но начнём с чего попроще. А именно — с объектов браузера.

    Объекты браузера

    Существует путаница в классификации клиентских объектов. Часто можно встретить в одном перечне объекты window , location , history , document , navigator . (Объект screen часто вообще не упоминается в перечнях.) Это не совсем точно. Объекты location , history , document и navigator (а также screen ) являются потомками (свойствами) window . В свою очередь, document имеет так много потомков (свойств), что его нужно рассматривать отдельно и подробно. А более непритязательные объекты — location , history , navigator и screen — целесообразно рассмотреть в одной связке, условно назвав её «объекты браузера» .

    Итак, приступим к изучению этих объектов.

    Примечание

    У объекта document также есть свойства (объекты) location и history . Прошу это сразу запомнить и постараться не путать «однофамильцев».

    Объект location

    Свойства объекта описывают и хранят местонахождение текущего документа — например, адрес URL.

    При управлении объектом location существует возможность изменять адрес URL документа. Объект location связан с текущим объектом window — окном, в которое загружен документ.

    Синтаксис

    [переменная_окна.]location .свойство;

    переменная_окна — необязательная переменная, задающая окно, к которому обращается объект. Если переменная опущена, подразумевается свойство текущего окна.

    свойство — свойство объекта location , к которому обращена инструкция.

    Внимание!

    Свойство location объекта window легко перепутать со свойством location объекта document (значение document.location изменить нельзя, тогда как window.location — можно. При загрузке страницы значение document.location автоманически присваивается объекту window.location .

    Обращение к фрейму

    Можно также изменить содержимое фрейма во фреймосодержащем документе при помощи свойства parent — синонима объекта window , обозначающего окно верхнего уровня, если окон несколько.

    Синтаксис

    parent .frames [n].location = "адрес_URL" ;

    n — число, указывающее номер запрашиваемого фрейма в коллекции frames .

    "адрес_URL" — URL документа, который инструкция загрузит в этот фрейм.

    Свойства объекта location

    href

    Полный адрес URL текущего документа, например:

    location .href =

    Свойство href является свойством объекта location по умолчанию. То есть отсутствие свойства при указании объекта location равносильно определению location.href . Например, следующие две инструкции эквивалентны и устанавливают одно и то же значение:

    location = "http://myhost.ru/aboutme.html" location .href = "http://myhost.ru/aboutme.html"

    hash

    Часть URL после символа # , которая соответствует местоположению якоря в документе (если таковой имеется).

    Символ # не включается в имя свойства при его установке.

    location .href = http://myhost.ru/aboutme.html#ancor1" location .hash = "ancor1"

    pathname

    Часть адреса URL, описывающая каталог, в котором находится документ, включая начальный символ косой черты:

    location .href = "http://myhost.ru/images/pict1.jpg" location .pathname = "/images/pict1.jpg"

    protocol

    Префикс адреса URL, описывающий протокол обмена. Иными словами, компонент URL до первого двоеточия, включая его. Возможные значения: "http:" , "ftp:" , "mailto:" и "file:" .

    host

    Часть адреса текущего документа, включающая имя хоста и порта сервера (если определён) через двоеточие, например:

    location .host = "myhost.ru:80"

    Что такое порт?

    hostname

    Первая половина свойства host (без порта):

    location .hostname = "myhost.ru"

    port

    Вторая половина свойства host (только порт):

    location .port = "80" Примеры свойств

    С помощью свойств объекта location можно манипулировать разными участками полного адреса URL. Полный адрес - то есть location.href (или просто location) складывается из следующих «кубиков» (слэши после протокола необходимо доьавить вручную):

    location.protocol + "//" + location.hostname + location.pathname Проверим данную страницу:

    Document.write (location .href)

    Примечание

    Если страница находится у вас на компьютере, то после протокола (file:) появятся не два, а три слэша:

    file:///F:/site/!my2008/lsn_js31.html

    Третий слэш «закрывает» пустую строку, которая появляется вместо свойства hostname. В браузере Opera hostname будет определяться как localhost:

    Document.write (location .protocol) document.write (location .hostname)

    Примечание

    Если страница находится у вас на компьютере, то свойство возвратит пустую строку (Opera выдаст localhost).

    Document.write (location .pathname)

    Примечание

    Если страница находится у вас на компьютере, то свойство возвратит полный путь после протокола file://. При этом в IE слэши после обозначения диска будут обратными:

    /F:\site\!my2008\lsn_js31.html

    В других браузерах - прямыми:

    /F:/site/!my2008/lsn_js31.html

    Document.write (location .protocol + "//" + location .hostname + location .pathname)

    Примечание

    Если страница находится у вас на компьютере, то в IE слэши после обозначения диска будут обратными:

    file:///F:\site\!my2008\lsn_js31.html

    Браузер Opera добавит в качестве хоста localhost:

    file://localhost/F:/site/!my2008/lsn_js31.html

    Итак, всё вернулось на круги своя.

    Методы объекта location

    reload()

    Синтаксис

    location .reload ([проверка])

    проверка — дополнительное Булево значение, по умолчанию — true .

    Выполняет жесткую перезагрузку текущего документа окна (определённого свойством location.href ). Собственно, это же делает кнопка браузера «обновить» («refresh» ).

    По умолчанию (без аргумента) или с аргументом true метод заставляет браузер проверить время последнего изменения документа и загрузить его либо из кэша(если не был изменён), либо с сервера (соответствует кнопке «обновить» ).

    Если в качестве аргумента указано false , то браузер перезагрузит текущий документ с сервера без какой-либо предварительной проверки. Это соответствует нажатию на кнопке «обновить» при удержанной кнопке Shif t (Shift+Refresh )или Ctrl+F5 в Internet Explorer.

    replace()

    Синтаксис

    location .replace ("URL" )

    URL — строка содержащая полный или относительный URL документа, который будет загружен в текущее окно или фрейм.

    Загружает новый документ в текущее окно, не занося предыдущую страницу в список history (об объекте history — чуть ниже). То есть при нажатии кнопки браузера «назад» («back» ) пользователь не сможет вернуться на предыдущую страницу.

    Это полезно применять при переадресации сайта.

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

    Допустим, мы сделали это через свойство href :

    location.href = "новый_адрес_страницы"

    Скрипт приведёт нас на нужную страницу, но если нам зачем-либо понадобится нажать кнопку «назад» мы будем снова попадать на страницу переадресации, которая вновь пошлёт нас по указанному адресу («а приехал я назад, а приехал в Ленинград»), то есть кнопка «назад» окажется «зацикленной», и последняя страница станет тем самым «отцепленным вагоном» Маршака.

    Но можно сделать грамотную переадресацию через метод replace() :

    location.replace("новый_адрес_страницы" )

    Преимущество этого метода в том, что промежуточная страница не записывается в массив history , и кнопка «назад» корректно приведёт нас на страницу, на которой мы были до этого.

    Объект history

    Пока мы сидим в интернете и переходим со страницы на страницу (то есть, научно говоря, выполняем «сессию браузера»), браузер ведёт журнал, содержащий список адресов страниц (URL), которые мы посетили. Эти адреса записываются в массив, который используется браузером при нажатии кнопок «Назад» («Back») и «Вперёд» («Forward»). Массив содержится в объекте history . В многооконных браузерах каждое окно имеет собственный объект history .

    Свойства объекта history

    current

    URL текущего окна в массиве history . Появляется при загрузке первой страницы. Обновляется при загрузке каждой следующей страницы в то же окно (вкладку).

    next

    URL следующего окна в массиве history . Появляется или обновляется после того, как мы нажали кнопку «Назад» («Back» ).

    previous

    URL предыдущего окна в массиве history . Появляется или обновляется при каждом переходе на новую страницу.

    length

    Число элементов в массиве просмотренных страниц (размерность массива history ).

    Примечание

    В браузерах IE и Opera начальное значение равно 0 (то есть свойство возвращает не размерность массива, а номер текущего элемента), в браузерах Mozilla, Firefox и Google Chrome - это 1 (то есть именно размерность массива).

    Для проверки можете поместить на страницу такой скрипт,

    document.write (history.length)

    а потом открыть её в разных браузерах.

    Методы объекта history

    back()

    Синтаксис

    History.back()

    Перейти на предыдущую страницу (эмуляция кнопки «Назад»). Если предыдущей страницы нет, то вызов метода ничего не даст.

    forward()

    Синтаксис

    History.forward()

    Перейти на следующую страницу (эмуляция кнопки «Вперёд»). Вызов метода на последней странице ничего не даст.

    go()

    Синтаксис

    History.go(шаг) /* или */ history.go("URL")

    Аргументы

    шаг - целое число, показывающее, на сколько шагов вперёд/назад надо переместиться. Значение 0 перезагружет текущую страницу; значение -1 эквивалентно back() ; значение 1 эквивалентно forward() . Если шаг лежит за границами истории посещений (например -1 для первой страницы), то метод ничего не не даст.

    URL - адрес документа, сохранённого в списке хронологии.

    Перемещает на определённую позицию в массиве history или на адрес страницы, содержащейся в массиве.

    Объект navigator

    Объект navigator представляет ряд свойств браузера.

    Все браузеры имеют несколько общих ключевых свойств, но у каждого браузера есть свои дополнительные свойства. Объект navigator позволяет увидеть, какой браузер и какая его версия выполняют скрипт, и поэтому бывает нужен при создании кроссбраузерных скриптов.

    Свойства объекта navigator

    Для «общего развития» привожу все свойства этого объекта. Хотя, как вы увидите, некоторые из них на сегодняшний день достаточно бессмысленны. Но языки программирования пишутся «на вырост», и со временем «балластовые» свойства могут оказаться актуальными.

    Свойства перечислены по алфавиту, а не по значимости.

    appCodeName

    Показывает кодовое имя браузера. У всех браузеров (IE, Netscape, Mozilla, Firefox, Opera, Google Chrome и т.д.) кодовое имя - Mozilla. Так что это свойство пока практического значения не имеет.

    appMinorVersion

    Всем программам традиционно присваиваются «большие» (major) и «малые» (minor) номера версии. «Большая» версия обозначает принципиально новый вариант программы. «Малая» - улучшенный и исправленный вариант текущей версии программы. Обычно «малая» версия пишется после точки вслед за «большой». Например, 4.03.

    По идее свойство appMinorVersion должно возвращать номер «малой» версии браузера (тот, что после точки). Однако в большинстве браузеров возвращается undefined , т.е. «не определено». Так что свойство опять же чисто номинальное.

    appName

    Показывает имя браузера.

    Microsoft Internet Explorer

    Netscape, Mozilla, Firefox, Google Chrome

    * в браузере Opera есть «обманная» настройка, которая позволяет ему «мимикрировать» под другие имена. Зачем - непонятно.

    Свойство appName позволяет в общих чертах определить тип браузера. На заре интернета этого вполне хватало. Однако сейчас для точного и корректного определения стоит пользоваться другими приёмами (см. ниже).

    appVersion

    Показывает полный номер версии браузера и - в скобках - платформу операционной системы и заданный по умолчанию язык - часть информации, возвращаемой свойством userAgent (см. ниже). IE и Google Chrome показывают более полную информацию userAgent .

    В Firefox и Google Chrome возникает путаница с номером версии. Так, и Firefox 3, и Google Chrome показывают номер версии 5.0.

    Почему так?

    С выходом IE и Netscape 4-х версий произошла «бархатная революция» в «сближении и взаимопонимании» этих браузеров. Поэтому часто в ветвлениях кода для разных браузеров определение версии 4 используется как «индикатор соответствия». Это делается извлечением номера «большой» версии из свойства appVersion с помощью метода parseInt() , например:

    if (parseInt(navigator.appVersion) >= 4 ) { // код для браузеров 4 версии и выше } else { // код для старых браузеров }

    Отсюда понятно, что «завышенный» номер версии используется в Firefox и Google Chrome для «подстраховки».

    Итак, мы выяснили, что при всей громоздкости и «глючности» это свойство может найти полезное применение в кроссбраузерных кодах.

    Значения свойства appVersion в некоторых браузерах:

    4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)

    Firefox 3.63

    5.0 (Windows; ru) // скромненько и со вкусом

    Google Chrome *

    5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16

    * почему-то русская версия браузера всё равно возвращает en-US.

    Opera 8.54

    8.54 (Windows NT 5.1; U; ru)

    Ваш браузер

    Что означает абракадабра, похожая на шпионский шифр, рассмотрим в свойстве userAgent .

    browserLanguage

    Если вы обратили внимание, в IE свойство appVersion возвращает что угодно, кроме языка.

    Свойство browserLanguage - язык браузера по умолчанию - специфическое свойство IE (его понимает также Opera 7 и выше). Остальные браузеры возвращают undefined .

    cookieEnabled

    Свойство определяет, позволяет ли данный браузер читать и записывать данные cookie. Оно используется в скриптах, работающих с «куками», например:

    if (cookieEnabled) { setCookieData(data)}

    Возвращает булево значение (если да, то true ).

    cpuClass

    Ещё одна «примочка» IE. Возвращает информацию о CPU клиентского компьютера (кто не знает, CPU - это процессор). Процессоры Intel возвращают x86 , PowerPC Macintosh - PPC . Ни тебе скорости, ни номера модели. И зачем, однако?..

    javaEnabled

    Булево значение. Проверяет, включён ли Java в установках браузера (если да, то true ).

    language

    То же, что browserLanguage , но для браузеров с appName Netscape. Opera понимает оба свойства.

    onLine

    Булево значение. Проверяет, установлен ли браузер для просмотра online или offline (если да, то true ). Opera не поддерживает.

    platform

    Возвращает название операционной системы или аппаратной платформы браузера. Для Windows 95/NT, значение - Win32; для Macintosh, на PowerPC CPU, значение - MacPPC. Использование этого свойства для определения базовых средств клиента в условном выражении могут помочь оптимизировать вывод страницы для каждого устройства. Например:

    userAgent

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

    На многих комапьютерах установлены пвкеты.NET Framework - технологии, поставляемой Microsoft. Свойство userAgent браузера IE указывает также версии этих пакетов. CLR (Common Language Runtim) - «общеязыковая исполняющая среда» - компонент пакета Microsoft .NET Framework, выполняющий программы, написанные на.NET-совместимых языках программирования.

    Поскольку в браузерах «согласья нет», многие сайты для работы с «лебедем, раком и щукой» используют userAgent для определения браузера и в зависимости от получаемого значения посылают соответствующее содержимое веб-страниц. Из-за этого многие браузеры стали «прятать» или «подделывать» userAgent . Отсюда использование браузером IE, а затем и Google Chrome строки userAgent , начинающейся с «Mozilla/ ». Отсюда и «глючная» опция браузера Opera, позволяющая пользователю выбирать для браузера поддельный «псевдоним».

    Из-за этой путаницы для определения браузера лучше использовать не свойство целиком, а его отдельные наиболее характерные элементы, находя их методом indexOf() . Например, проверить наличие желаемой строки можно так:

    if (navigator.userAgent.indexOf ("MSIE" ) != -1 ) var isIE = true

    Кроме популярных «лебедя, рака и щуки», могут встретиться малопопулярные «медвели» и «крокодилы» с каким-нибудь совсем «левым» userAgent . И для них опренделение через userAgent может не сработать вообще. Поэтому определение типа браузера через userAgent может оказаться таким же некорректным, как и через appName .

    После перечисления оставшихся свойств я приведу способ наиболее корректной проверки (хотя и она не даёт стопроцентной гарантии).

    userLanguage

    Значение по умолчанию языка браузера, основанное на установке операционной системы user profile (если таковая имеется). По умолчанию соответствует свойству browserLanguage . Поддерживается только браузерами IE и Opera.

    userProfile

    Объект, который позволяет непосредственно по запросу сценария обратиться к личной информации, сохраненной в параметрах пользователя (для Win32 версий IE 4+).

    В данном обзорном разделе мы не будем рассматривать громоздкий, но малоупотребительный объект userProfile с его многочисленными методами, тем более, что он существует в IE 6 и только в IE 6 (это, кстати, может пригодиться для определения версии браузера).

    vendor

    Возвращает название распространителя браузера. Не поддерживается IE и Opera. Firefox обычно выдаёт пустую строку. Значение для Google Chrome - «Google Inc. ».

    На сегодняшний день может использоваться как определитель браузера Google Chrome.

    Отступление: способы определения браузера

    Определяя тип браузера, логичнее идти не от «вывески», а от его внутренних свойств. Хотя и «вывеска» может сыграть свою подсобную роль.

    Самый элементарный способ

    Чуть забегая вперёд, обратимся к свойствам документа (подробнее см. в следующем уроке). Принципиальное различие IE и браузеров семейства Netscape в том, что первый поддерживает коллекцию document.all , а последние - нет.

    if (!document.all) { /* код для семейства Netscape (восклицательный знак означает отрицание) */ }

    Здесь мы определили вариант для браузеров семейства Netscape. В «противный случай» попадают браузеры, поддерживающие document.all : IE, Opera и, возможно, какие-то ещё малопопулярные. Для их разделения воспользуемся «вывеской» IE.

    Часто этого способа бывает достаточно.

    Ещё один элементарный способ

    Браузер IE поддерживает специальный синтаксис, который интерпретирует код только в IE. Этот код помещается в тэг комментариев, поэтому остальные браузеры видят просто комментарий и игнорируют его.

    В дополнение к этому существует тэг , который IE интерпретирует как комментарий (и, соответственно, игнорирует его содержимое), а остальные браузеры просто читают его содержимое, как будто самого этого тэга нет.

    Из этого можно соорудить следующую конструкцию:

    Код для браузера IE // Код для других браузеров

    Ключевые слова для IE:

    IE - любая версия браузера Internet Explorer;

    IE 6 - Internet Explorer 6;

    IE 7 - Internet Explorer 7;

    IE 8 - Internet Explorer 8;

    IE 9 - Internet Explorer 9;

    lt - номер версии браузера меньше указанной;

    gt - номер версии больше указанной;

    lte - номер версии меньше или равен указанной;

    gte - номер версии больше или равен указанной.

    Например, означает любую версию IE, начиная с IE 6.

    Более хитрые способы (обзор)

    Если поискать, то у каждого браузера можно найти какие-нибудь «фишки», присущие ему одному.

    Как мы уже знаем, Opera умеет прикидываться другими браузерами (в 10-й версии это безобразие прекратилось). Но при этом (начиная с 5-й версии) поддерживает объект JavaScript window.opera . Вот она и спалилась. Этот же объект может показать и версию:

    Window.opera.version()

    Допустим:

    if (window.opera != null ) { if (window.opera.version() >= 8 ) { // Код для Opera 8 и новее } else { // Код для Opera старше 8 } } else { // Код для других браузеров }

    Google Chrome имеет уникальный объект window.chrome . Версию определить сложнее, поскольку parseFloat(navigator.appVersion) выдаст «обманку» 5.0. Пока не будем лезть в дебри регулярных выражений (а это делается именно с их помощью).

    Уникальные объекты Firefox - window.sidebar и window.globalStorage . С версией те же проблемы, что и у Google Chrome.

    У Safari не обнаружилось уникальных объектов, но у него нет объекта window.external . Этого объекта лишена и Opera. Поэтому ветка для определения Safari может выглядеть так:

    if ((!window.external)&&(!window.opera)) { // Код для Safari }

    IE поддерживает объекты window.all и window.ActiveXObject .

    В IE 6 и только в IE 6, как мы знаем, существует navigator.userProfile . В IE 8 появились объекты window.Storage и window.Event . В IE 7, соответственно, нет ни userProfile , ни Storage , ни Event .

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

    Методы объекта navigator

    preference()

    Через маркированные скрипты в Navigator 4 и выше можно обращаться к пользовательским параметрам настроек браузера. Они включают такие детали, как «разрешил ли пользователь загружать изображения» или «позволяются ли таблицы стилей». Большинство этих параметров настройки предназначено для скриптов, используемых сетевыми администраторами, чтобы устанавливать и управлять пользовательскими параметрами настройки Navigator.

    Аргументы

    name - название настройки как строка, типа general.always_load_images.

    value - дополнительное значение, чтобы установить названное предпочтение.

    taintEnabled()

    Возвращает, включен ли в браузере «data tainting». Этот механизм защиты никогда не был полностью реализован в Navigator, но проверяющий это метод включён в более новые версии Navigator для обратной совместимости. IE 4+ также включает его для совместимости, хотя всегда возвращает false . Возвращает булево значение: true|false .

    Объект screen

    Объект screen определяет свойства экрана, на котором показан браузер. На их значения влияют многие параметры настройки панели управления.

    Методов объект screen не имеет.

    Свойства объекта screen

    Высота и ширина видимой области монитора пользователя в пикселях. Не включает панель задач в 24 пикселя (Windows) или системную строку меню в 20 пикселей (Macintosh). Чтобы использовать эти значения при создании развёрнутого окна, необходимо корректировать верхнюю левую позицию окна.

    Пример (окно на полширины и всю высоту в левой верхней точке экрана, панель задач не заслоняется):

    window.open ("" , "" , "height=" + screen.availHeight + ", width=" + screen.availWidth/2 + ", top=0, left=0" );


    Есть вопросы?

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам: