Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_str-loc.doc
Скачиваний:
2
Добавлен:
13.11.2019
Размер:
85.5 Кб
Скачать
  1. Методы.

Объект location имеет два метода :

а) Метод location.reload() используется для перезагрузки текущего документа. Выполнение этого метода равносильно выполнению команды "Обновить" браузера.

Чтобы при перезагрузке документа подавить попытки браузера считать документ из своего кэша, нужно передать методу аргумент со значением true.

б) Метод location.replace("новый_URL")используется для замены текущего URL на новый. Внешне его действие похоже на то, как если бы свойство объекта href было бы изменено вручную, т.е. загружается новая страница. Но между этими двумя случаями имеется важное отличие.

При выполнении метода location.replace()новая страница замещает предыдущую не только в буквальном смысле, но и в цепочке загруженных страниц, сохраняемой объектом history браузера. Поэтому, после перехода на новую страницу с помощью этого метода, вернуться на предыдущую страницу с помощью кнопки "Назад" нельзя. Возврат бывает удобен, например, когда пользователь, чтобы что-то уточнить, вызвал вспомогательную страницу, и потом хочет вернуться на основную страницу.

Если пользователь по ссылкам основной страницы уйдет дальше, то использование метода location.replace()позволит в дальнейшем обойтись без ненужного посещения вспомогательной страницы.

ЗАДАНИЕ 2

Упростить решение Задания 1, применив свойство location.search.

ЗАДАНИЕ 3 (Имитация парольной защиты)

Имеется регистрационная страница (reg.htm), где пользователь должен ввести пароль.

Этот пароль передается на вспомогательную страницу (check.htm), где происходит проверка пароля. Если пароль введен неправильно, то пользователь автоматически возвращается на регистрационную страницу. Если пароль верен, то пользователь попадает на целевую страницу (target.htm) с интересующей его информацией.

Ошибка Верно

На проверку

Порядок выполнения задания.

  1. Создать файл reg.htm с формой, в которой имеется текстовое поле для ввода пароля и кнопка "Проверить" типа Submit.

  1. Написать функцию-обработчик checkPswd события onSubmit, в котором выполняется проверка, введен ли пароль (пуста ли соответствующая текстовая строка). Если пароль не введен, то должно появляться сообщение (alert): "Необходимо ввести пароль!". В этом случае необходимо предусмотреть, чтобы обработчик возвращал значение false.

Примечание.

В одной из предыдущих лабораторных работ обсуждалась проблема, связанная с поведением формы при нажатии кнопки Submit. По умолчанию при нажатии этой кнопки форма пересылается на обработку. Однако это нужно не всегда. В частности, если форма заполнена неправильно, то нужно предложить пользователю исправить ошибки. Для управления действиями "пересылать — не пересылать" используется значение, возвращаемое выражением, записанным в роли обработчика события OnSubmit. Если возвращается значение false, то форма остается "на месте", если true (принимается по умолчанию) — то форма пересылается на обработку. Файл, выполняющий обработку, задается в атрибуте action. Таким образом, тег формы должен иметь структуру

<form action="check.htm" onsubmit="return checkPswd()">

  1. Создать файл check.htm, в котором пока выполняется следующее: из URL страницы считывается строка запроса (начиная с вопросительного знака), из нее выделяется подстрока, являющаяся значением пароля. Для тестирования работы программы эта подстрока выводится в окно сообщений.

  2. Убедившись, что пароль выделяется правильно, необходимо приступить к его проверке.

Чтобы усложнить выяснение пароля "злоумышленникам", необходимо эталонное значение пароля вынести во внешний файл pswd.js и предусмотреть подключение этого файла в check.htm. В файле pswd.js нужно просто определить значение некоторой переменной, например, password="1223".

После этого появляется возможность проводить сравнение правильности введенного пароля. Для тестирования программы предусмотреть вывод соответствующих сообщений при совпадении и несовпадении паролей.

  1. Создать целевой файл target.htm, в котором выводится некоторый текст, например, "Здесь будет полезная информация".

  2. В файле check.htm, предусмотреть автоматическую перезагрузку страниц при совпадении и несовпадении пароля. В случае успеха проверки должна быть загружена страница target.htm. А в случае неудачи — предусмотрен возврат на регистрационную страницу. Так как страница для проверки пароля является вспомогательной, то для перезагрузки документов имеет смысл использовать метод location.replace.

  3. Чтобы пользователь не находился в недоумении, необходимо каким-то образом сообщать ему, что причиной возврата на регистрационную страницу является неправильно введенный пароль. Простейшее решение — выводить предупреждение на странице check.htm, где производится сверка паролей. Однако это плохое решение, так как страница содержит важную для "взломщика" информацию и желательно "проскочить" ее незаметно для пользователя. Тогда остается одно — сообщение должно выводиться на регистрационной странице reg.htm.

Однако на этой странице надо как-то отличать первую загрузку, когда сообщение о неверном пароле не должно появляться, от возвратов на нее. При задании URL для возврата на регистрационную страницу (файл check.htm), можно предусмотреть передачу некоторого признака через строку запроса. Например, можно использовать следующий URL: reg.htm?no. После этого в файле reg.htm можно легко выяснить, первая эта загрузка или нет. Соответствующий скрипт имеет смысл поместить в заголовочную часть документа. Если строка запроса документа имеет вид "?no", то выводится сообщение "Введен неправильный пароль!", иначе происходит обычная загрузка.

Имеется последняя проблема: в адресной строке регистрационной страницы после возврата будет содержаться добавленная нами информация. Если пользователь нажмет кнопку браузера "Обновить" (т.е. хочет начать все с самого начала), то он получит сообщение об ошибке пароля.

Чтобы избавиться от этого (т.е. от "?no") , нужно выделить из URL документа подстроку до вопросительного знака, и перезагрузить документ с новым URL. Перезагрузка должна быть предусмотрена только при наличии ошибки в пароле и после вывода сообщения об этой ошибке.

СПРАВКА

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]