Непрофессиональное введение в JAVASCRIPT

         

Панель навигации


Давайте посмотрим на панель навигации. У нас есть несколько ссылок в одном фрейме. Если пользователь нажимает на эти ссылки, страницы не будут появляться в том же самом фрейме - они будут загружены во второй фрейм.

Посмотрите пример:

Сначала нам неоходим сценарий, который создаст фреймы. Этот текст напоминает первый пример, который был в этой части:

frames3.htm

<html> <frameset rows="80%,20%"> <frame src="start.htm" name="main"> <frame src="menu.htm" name="menu"> </frameset> </html>

Страница start.htm - начальная страница, которая будет отображаться во фрейме main сначала. Не существует никаких специальных требований для этой страницы.

Следующая страница загружена во фрейм menu:

menu.htm

<html> <head> <script language="JavaScript"> <!-- hide

function load(url) { parent.main.location.href= url; }

// --> </script> </head> <body>

<a href="javascript:load('first.htm')">first</a> <a href="second.htm" target="main">second</a> <a href="third.htm" target="_top">third</a>

</body> </html>

Здесь Вы видите различные пути загрузки новой страницы во фрейм main. Первая ссылка использует функцию load(). Взгляните на то, как эта функция вызывается:

<a href="javascript:load('first.htm')">first</a>

Вы видите, что мы позволяем броузеру выполнять код JavaScript, вместо того, чтобы загрузить другую страницу - мы должны использовать javascript: в свойстве href. Вы видите, что мы пишем 'first.htm'

внутри скобок. Эта строка передается в функцию load(). Функция load() определена через:

function load(url) { parent.main.location.href= url; }

Здесь можете видеть, что мы пишем url внутри скобок. Это означает, что строка 'first1.htm' хранится в переменной url. Теперь внутри load() мы можем использовать эту переменную. В дальнейшем мы рассмотрим последующие примеры этого важного понятия передачи переменной.


Вторая ссылка использует свойство target. Фактически это не JavaScript. Это - HTML-свойство. Вы видите, что мы должны только определить имя фрейма. Пожалуйста обратите внимание, что мы не помещаем parent перед именем фрейма. Это может немного спутать. Причина этого то, что target это HTML, а не JavaScript.

Третья ссылка показывает Вам, как удалить фреймы с помощью свойства target.

Если Вы хотите удалить фреймы функцией load()(), Вам просто надо написать parent.location.href= url

внутри функции.

Итак, который путь Вы должны выбрать? Это зависит от вашего сценария и что Вы хотите сделать. Свойство target очень просто. Вы могли бы использовать его, если Вы хотите только загрузить страницу в другой фрейм. Решение на JavaScript (то есть первая ссылка) обычно используется, если Вы хотите сделать несколько вещей как реакцию на щелчок на ссылке. Одна общая проблема состоит в том, чтобы загрузить две страницы сразу в двух различных фреймах. Хотя Вы могли бы решить её свойством target используя напрямую функцию JavaScript. Давайте условимся, что Вы имеете три фрейма, названные frame1,frame2 и frame3. Пользователь нажимает на ссылку в frame1. Затем Вы хотите загрузить две различных страницы в два других фрейма. Например, Вы можете использовать эту функцию:

function loadtwo() { parent.frame1.location.href= "first.htm"; parent.frame2.location.href= "second.htm"; }

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

function loadtwo(url1, url2) { parent.frame1.location.href= url1; parent.frame2.location.href= url2; }

Затем, Вы можете вызывать эту функцию с помощью loadtwo("first.htm", "second.htm") или loadtwo("third.htm", "forth.htm"). Передачу переменную делает вашу функцию более гибкой. Вы можете использовать её много раз в различных контекстах.

[предыдущая] [содержание] [следущая]

©1996,1997 by Stefan Koch

e-mail:skoch@rumms.uni-mannheim.de

http://rummelplatz.uni-mannheim.de/~skoch/

My JavaScript-book


Содержание раздела