Adobe CS5: конспекты, упражнения
мои конспекты (часть) с курса по программам из комплекта Adobe CS5: Illustrator, Photoshop, немного Flash и совсем чуть чуть InDesign и Dreamweaver. кроме того, собственные записи в процессе с ознакомлением с HTML, CSS, JS, полезные и интересные ссылки по этим темам и по веб-дизайну
07 декабря 2012
30 сентября 2012
html: кнопки и менюшки
создание кнопки
Кнопку на веб-странице можно создать с помощью тега <INPUT> и тега <BUTTON>.
меня сейчас интересует вариант <BUTTON>
причем, без тега <form>
если внутри тела страницы разместить <button>Кнопка с текстом</button> получится
на такой кнопке можно разместить элементы html, включая изображения и таблицы.
кнопка с картинкой пишется так:
<button><img src="/papka/kartinka.gif" width="25" height="32" alt="картинка"> Кнопка с рисунком</button>
после img src=" правильно написать ссылочку
там, где на кнопке квадратик, появится картинка
для перехода по ссылке:
<button onClick="document.location='http://yandex.ru';">Переход по ссылке</button>
дальше
создание менюшки
следующий материал взят тута
примеры аффтора: горизонтальное выпадающее меню, вертикальное и линейное меню
Для начала рассмотрим как должна выглядеть HTML разметка нашего меню. Здесь все очень просто — все меню это вложенные списки:
<!-- разметка меню — это вложенные списки -->
<ul class="dropdown">
<li ><a href="/html-css/css-drop-down-menu/">Вернуться к статье</a></li>
<li><a href="./" class="dir">Посмотреть разделы сайта</a>
<ul>
<li><a class="dir" href="/html-css/">HTML и CSS</a>
<ul>
<li><a href="#">HTML</a></li>
<li><a href="#">CSS</a></li>
</ul>
</li>
<li><a href="/js/">JavaScript</a></li>
<li><a href="/photoshop/">Photoshop</a></li>
<li><a href="/design/">Дизайн</a></li>
<li><a href="/misc/">Разное</a></li>
</ul>
</li>
Класс
описание тега <ul>
описание тега <li>
после href=" как обычно должна идти ссылка . в данном примере автор использует относительные ссылки - относительно своего root folder, т.е. коренной папки, в которой живет его сайт. у нас они работать не будут. нужны свои (правильно написать ссылочку). у него работают: пример готового горизонтального меню
у нас же пока получилась штука как на картинке справа:
для связывания документа с файлом CSS применяется тег <LINK>. Данный тег помещается в контейнер <HEAD> (подключение CSS)
у меня он выглядит так:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>buttons and menu</title>
<link rel="stylesheet" type="text/css" href="horizontalMenu_raspolozhenie.css">
</head>
описание атрибута rel
значение stylesheet обращение к внешнему ресурсу: вызов таблицы стилей
для того, чтобы немного разобраться в CSS я воспользовалась еще одним интернет-уроком
содержимое файла CSS , отвечающее за расположение меню:
/** * Horizontal CSS Drop-Down Menu Module * @file dropdown.css * @package Dropdown * @version 0.7.1 * @type Transitional * @stacks 597-599 * @browsers Windows: IE6+, Opera7+, Firefox1+ * Mac OS: Safari2+, Firefox2+ * * @link http://www.lwis.net/ * @copyright 2006-2008 Live Web Institute. All Rights Reserved. * */ первым делом убираем разметку ненумерованного списка и отступы
ul.dropdown, ul.dropdown li, ul.dropdown ul { list-style: none; margin: 0; padding: 0; }
задаем положение элементов списка необходимо задать значение для свойства "position", как"relative", для того, чтобы относительно основного меню абсолютно позиционировать подменю. зададим нижнее подчеркивание для пунктов меню.
Свойство z-index определяет позицию элемента на оси Z: грубо говоря - как глубоко или близко к поверхности расположен элемент относительно остальных.чем выше значение, тем выше элемент. подробнее
ul.dropdown { position: relative; z-index: 597; float: left; }
задаем положение элементов списка
ul.dropdown li { float: left; line-height: 1.3em; vertical-align: middle; zoom: 1; } ul.dropdown li.hover, ul.dropdown li:hover { position: relative; z-index: 599; cursor: default; } ul.dropdown ul { visibility: hidden; position: absolute; top: 100%; left: 0; z-index: 598; width: 100%; } ul.dropdown ul li { float: none; } ul.dropdown ul ul { top: 1px; left: 99%; } ul.dropdown li:hover > ul { visibility: visible; }
Кнопку на веб-странице можно создать с помощью тега <INPUT> и тега <BUTTON>.
меня сейчас интересует вариант <BUTTON>
причем, без тега <form>
если внутри тела страницы разместить <button>Кнопка с текстом</button> получится
на такой кнопке можно разместить элементы html, включая изображения и таблицы.
кнопка с картинкой пишется так:
<button><img src="/papka/kartinka.gif" width="25" height="32" alt="картинка"> Кнопка с рисунком</button>
после img src=" правильно написать ссылочку
там, где на кнопке квадратик, появится картинка
для перехода по ссылке:
<button onClick="document.location='http://yandex.ru';">Переход по ссылке</button>
дальше
создание менюшки
следующий материал взят тута
примеры аффтора: горизонтальное выпадающее меню, вертикальное и линейное меню
- создается разметка меню в HTML ;
- файлы CSS :отвечающий за расположение элементов меню, второй — за внешнее оформление (что-то вроде скина);
- внесение поправок для IE, ибо без них не фурычит.
Для начала рассмотрим как должна выглядеть HTML разметка нашего меню. Здесь все очень просто — все меню это вложенные списки:
<!-- разметка меню — это вложенные списки -->
<ul class="dropdown">
<li ><a href="/html-css/css-drop-down-menu/">Вернуться к статье</a></li>
<li><a href="./" class="dir">Посмотреть разделы сайта</a>
<ul>
<li><a class="dir" href="/html-css/">HTML и CSS</a>
<ul>
<li><a href="#">HTML</a></li>
<li><a href="#">CSS</a></li>
</ul>
</li>
<li><a href="/js/">JavaScript</a></li>
<li><a href="/photoshop/">Photoshop</a></li>
<li><a href="/design/">Дизайн</a></li>
<li><a href="/misc/">Разное</a></li>
</ul>
</li>
Класс
dir
ставится на тех элементах, которые содержат вложенности.описание тега <ul>
описание тега <li>
у нас же пока получилась штука как на картинке справа:
для связывания документа с файлом CSS применяется тег <LINK>. Данный тег помещается в контейнер <HEAD> (подключение CSS)
у меня он выглядит так:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>buttons and menu</title>
<link rel="stylesheet" type="text/css" href="horizontalMenu_raspolozhenie.css">
</head>
описание атрибута rel
значение stylesheet обращение к внешнему ресурсу: вызов таблицы стилей
для того, чтобы немного разобраться в CSS я воспользовалась еще одним интернет-уроком
содержимое файла CSS , отвечающее за расположение меню:
/** * Horizontal CSS Drop-Down Menu Module * @file dropdown.css * @package Dropdown * @version 0.7.1 * @type Transitional * @stacks 597-599 * @browsers Windows: IE6+, Opera7+, Firefox1+ * Mac OS: Safari2+, Firefox2+ * * @link http://www.lwis.net/ * @copyright 2006-2008 Live Web Institute. All Rights Reserved. * */ первым делом убираем разметку ненумерованного списка и отступы
ul.dropdown, ul.dropdown li, ul.dropdown ul { list-style: none; margin: 0; padding: 0; }
задаем положение элементов списка необходимо задать значение для свойства "position", как"relative", для того, чтобы относительно основного меню абсолютно позиционировать подменю. зададим нижнее подчеркивание для пунктов меню.
Свойство z-index определяет позицию элемента на оси Z: грубо говоря - как глубоко или близко к поверхности расположен элемент относительно остальных.чем выше значение, тем выше элемент. подробнее
ul.dropdown { position: relative; z-index: 597; float: left; }
задаем положение элементов списка
ul.dropdown li { float: left; line-height: 1.3em; vertical-align: middle; zoom: 1; } ul.dropdown li.hover, ul.dropdown li:hover { position: relative; z-index: 599; cursor: default; } ul.dropdown ul { visibility: hidden; position: absolute; top: 100%; left: 0; z-index: 598; width: 100%; } ul.dropdown ul li { float: none; } ul.dropdown ul ul { top: 1px; left: 99%; } ul.dropdown li:hover > ul { visibility: visible; }
03 сентября 2012
встраивание компонентов в HTML-страницы
снова обращаюсь к книжке по ActionScript2.0 Дмитрия Гурского "Программирование во Flash MX 2004". часть информации несколько устарела или скоро устареет, но я нашла для себя много полезного. плюс легкий и доступный неспециалистам вроде меня язык.
главу помещаю без изменений и сокращений, хотя, возможно, и стоило сделать выжимку... но мне кажется правильным оставить немного истории - для пущего понимания :)
темы поста:
- помещение компонентов в HTML-страницы
- передачи внешних данных во Flash-ролик
- два способа передачи параметров
16.5.1. Теги <EMBED> и <OBJECT>
Мы можем публиковать SWF-фильмы как компоненты HTML-страниц благодаря тому, что браузеры могут включать внешние исполнимые модули. Во времена «войны браузеров» середины 1990-х годов компании Microsoft и Netscape пошли разными путями в реализации этой возможности. Microsoft разработала знаменитую технологию ActiveX, позволяющую при соблюдении ряда условий динамически включить в браузер исполнимое приложение. Netscape избрала более стандартный, но и более безопасный путь, просто введя поддержку плагинов. Не вдаваясь в подробности, отметим, что для пользователя в случае Flash разница между этими технологиями заключается в том, как происходит установка плейера. Если Internet Explorer обнаруживает, что страница содержит SWF-фильм, для которого в системе нет проигрывателя, то он выводит панель с предложением импортировать Flash-плейер с сайта компании Macromedia. Если пользователь соглашается, то установка приложения осуществляется прямо в процессе просмотра страницы и не требует
перезапуска браузера. В случае же Netscape Navigator все происходит по-иному. Пользователь должен самостоятельно скачать и установить плейер. После этого браузер должен быть перезапущен.
Для встраивания компонентов, использующих технологию ActiveX, Microsoft добавила в HTML тег <OBJECT>. Соответственно, для своей технологии плагинов Netscape придумала тег<EMBED>.
К концу 1990-х годов HTML был полностью стандартизирован. Единообразия ради тег <EMBED> был исключен из стандарта. Встраивание внешних компонентов было полностью возложено на тег <OBJECT>. На данном этапе его поддерживают все современные браузеры. Тег же <EMBED> нее больше уходит в историю.
Тег <OBJECT> впервые начал поддерживаться еще Microsoft Internet Explorer 3.0. тег <EMBED> появился во времена Netscape Navigator 2.0. Где-то до 1999 года они существовали параллельно, после чего <EMBED> начал сдавать позиции. В принципе, сейчас можно довольно смело публиковать SWF-фильм, используя только тег <OBJECT>. Однако если вы хотите, чтобы содержимое вашего сайта было доступно абсолютно всем посетителям, теги <OBJECT> и <EMBED> нужно использовать совместно. Тег <EMBED> вкладывается в <OBJECT>. Если браузер не сможет распознать тег <OBJECT>, он просмотрит его содержимое и, обнаружив тег <EMBED>, выполнит прописанные в нем инструкции. Если же браузер достаточно современный, чтобы поддерживать
тег <OBJECT>, то <EMBED> будет попросту проигнорирован.
Типичный HTML-код, используемый для публикации SWF-фильмов, может быть сгенерирован Flash автоматически. Для этого нужно поставить флажок HTML на закладке Formats окна Publish Settings и нажать кнопку Publish. В результате будет создан приблизительно следующий код (приведем лишь ту его часть, которая непосредственно отвечает за публикацию фильма):
<object
Classid="clsid:d27cdb6e-ae6d-llcf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.
cab#version=7,0,0,0"
width="550" height="400" id="mov.swf" align="middle">
<param name="allowScriptAccess" value="sameDomain"/>
<param name="movie" value="mov.swf"/>
<param narae="quality" value="high"/>
<param name="bgcolor" value="#ffffff"/>
<embed src="mov.swf" quality="high" bgcolor="#ffffff" width="550"
heights"400" name="mov" align="middle" allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer"/>
</object>
Проанализировав приведенный HTML-код, обнаружим, что теги <OBJECT> и <EMBED> имеютпрактически одинаковый набор параметров и атрибутов. Назначение большинства из них легко понять из их названия. Например, очевидно, что атрибут width должен отвечать за ширину области отображения фильма, атрибут align — за выравнивание фильма на странице, а параметр quality — за качество визуализации фильма. Большинство атрибутов и параметров чаще всего имеют одно и то же значение для большинства публикуемых фильмов. К примеру, если фильмы размещаются на одной и той же странице, то HTML-код для одного из них можно создать, просто скопировав теги <OBJECT> и <EMBED> другого. Затем придется заменить значения всего четырех элементов:
• ширина и высота фильма обычно индивидуальны, поэтому изменяем значение атрибутов width и height;
• адрес и имя публикуемого SWF-фильма будут, естественно, другими. Поэтому заменяем величину параметра movie и атрибута id тега <OBJECT>, а также значение атрибута src тега <EMBED>.
То, что HTML-код, отвечающий за встраивание SWF-фильмов, обычно столь мало различается у разных фильмов, заставляет задуматься, зачем вообще задавать параметры и атрибуты, которые практически всегда имеют одно и тоже значение. Также можно долго спорить и о том, стоит ли вообще прописывать тег <EMBED>, если браузер, не поддерживающий <OBJECT>, — это архаизм, который не так уж и просто найти. Вывод же можно сделать один: HTML-код, генерируемый Flash, избыточный. Более того, ввиду наличия в нем тега <HMBED> он даже не соответствует современным стандартам. Если использовать установки по умолчанию, то SWF-фильм можно встроить более коротким кодом:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550"
height="400">
<param name="movie" value="mov.swf"/>
</object>
Приведенный код будет хорошо работать только в браузерах от Microsoft. Если же необходимо учесть к тому же браузеры Netscape и Opera (доля которых, надо признать, довольно мала), то вместо атрибута classid следует использовать атрибут type (в нем указывается МIМЕ-тип встраиваемого файла):
<object type="application/x-shockwave-flash" width="550" height="400">
<param name="movie" value="mov.swf"/>
</object>
По своей эффективности данный код аналогичен генерируемому Flash, если не считать редких ситуаций, когда страница открывается очень старым браузером или в системе нет Flash-плейера. На практике вполне допустимо его использовать, добавляя лишь те атрибуты или параметры, значения которых для публикуемого фильма должны отличаться от принятых по умолчанию.
Если у пользователя не окажется плейера нужной версии или использование технологии ActiveX браузером запрещено, то SWF-фильм, естественно, не отобразится. Чтобы учесть подобные ситуации, вы должны разработать альтернативное содержимое, которое будет визуализировано на месте фильма. Описывающий его HTML-код должен быть помешен в тег <OBJECT>. Обычно альтернативное содержимое 1редставляет собой информационное сообщение (вроде «скачав Flash-плейер, вы видите замечательную заставку») или ссылку, заменяющую баннер или кнопку. В случае тега <EMBED> для задания альтернативного содержимого используется атрибут alt.
Общее количество атрибутов и параметров тегов <OBJECT> и <EMBED> весьма значительное. Другой вопрос, что все вместе они никогда не прописываются. Всего лишь несколько атрибутов являются обязательными. Остальные задаются лишь в том случае, если их величина должна быть отлична от значения по умолчанию.
Вообще все параметры и атрибуты можно разделить на две группы.
- В первую входят те из них, которые хранят информацию, использующуюся браузером. Это, например, расположение SWF-файла, ширина и высота области, которую нужно отвести под фильм, идентификационный номерFlash-плейера и т. д.
- Вторую группу образуют параметры и атрибуты, хранящие данные, которые передаются плейеру. К примеру, так плейер «узнает», должен ли быть фон прозрачным, следует ли использовать системные шрифты, должен ли фильм проигрываться в цикле. Атрибутов первой группы около 20. Но в случае Flash-фильмов используются не все из них. Информацию о наиболее часто применяемых атрибутах вы можете получить из табл. 16.2.
Ко второй группе относится несколько больше атрибутов и параметров, чем к первой. По сути они представляют собой внешние переменные, которые передаются плейеру перед началом проигрывания фильма. Будет ли такая переменная иметь форму атрибута или параметра, зависит от тега. Вслучае тега <EMBED> переменные с настройками задаются в форме атрибутов (то есть они поме-шаются непосредственно в тег). Если же прописывается тег <OBJECT>, то переменные с даннымидля плейера должны быть заданы как параметры. Для этого служит специальный тег <PARAM>. Уэтого тега имеется два атрибута: name — имя параметра и value — его значение.
Например, чтобысделать задний фон прозрачным, следует набрать
<param name="wmode" value="Transparent"/>
Большинство атрибутов и параметров второй группы мы подробно рассмотрели, когда изучали настройки, за которые они отвечают. Поэтому сейчас ограничимся лишь краткой их характеристикой (табл. 16.3).
Если HTML-страница с фильмом публикуется из среды разработки Flash, то задать значения практически для всех атрибутов можно, соответствующим образом определив настройки на закладке HTML окна Publish Settings. Впрочем, HTML-код, генерируемый по умолчанию, избыточен. Так что стоит разработать собственный шаблон публикации. Как это сделать, весьма обстоятельно описывается в справочной системе программы.
16.5.2. Передача данных из HTML-окружения при загрузке фильма
Существует много способов передачи внешних данных во Flash-фильм. Выбор подхода должен определяться типом этих данных, их расположением, а также тем, когда они должны поступить в фильм. В простейшем случае данные являются текстом, хранящимся на той же НТМL-странице, импортировать который необходимо перед началом воспроизведения фильма. Оптимальный способ передачи данных такого рода связан с применением специального параметра flashvars тега <OBJECT> (или атрибута тега <EMBED>).
Значением тега flashvars должна быть строка, содержащая передаваемые данные в виде нужного количества пар имя-значение, разделенных амперсантом (&).
Например, если вам необходимо переслать в фильм имя посетителя, его возраст и страну проживания, то следует набрать
<param name="flashvars" value="name=Bob&age=25&location=USA"/> (тег <OBJECT>)
flashvars="name=Bob&age=25&location=USA" (тег <EMBED>)
Пары имя-значение принято называть переменными. При поступлении строки с такими переменными в фильм, на их основании будут созданы настоящие переменные ActionScript и помещены на основную временную диаграмму.
Например, проанализировав приведенный выше HTML-код,
плейер создаст три переменные: name, age и location, которые будут хранить строки «Bob», «25» и «USA». Естественно, что переменные, получаемые от HTML-окружения, должны иметь уникальные идентификаторы. Иначе они будут утеряны или перезаписаны при выполнении кода ActionScript.
Используя параметр (атрибут) flashvars, в фильм можно передать до 64 Кб данных.
В строке, присваиваемой параметру (атрибуту) flashvars, нельзя использовать пробел, некоторые знаки пунктуации (являющиеся в НТМL зарезервированными), например «<» или <« %», служебные и непечатаемые символы. Более того, если страница закодирована не в Unicode, нельзя применять символы кириллицы или любого другого национального языка. Строка может содержать только буквы из кодировки US-ASCII (первые 128 символов Unicode и большинства восьмибитовых кодировок). Для обозначения остальных символов используется запись вида %ХХ, где XX — код символа в шестнадцатеричном представлении. Например, чтобы задать пробел, нужно ввести %20, а для наклонной черты — %2F. Если используется кодировка Unicode, то символы, код которых больше 255, задаются записью %ХХ %YY. К примеру, кирилличная «а» запишется как %D0 %B0. Одиночный пробел можно задать символом «+». Подобные правила были выработаны нараннем этапе развития Интернета для однозначности трактовки URL на разных машинах. Поэтому о строке, записанной исходя из них, говорят, что она подверглась URL-кодированию.
Вы должны строго следовать правилам URL-кодирования, задавая значение параметра (атрибута) flashvars, иначе плейер не сможет верно интерпретировать строку с парами имя-значение. Также нужно помнить, что Flash-плейер по умолчанию использует Unicode. Это означает, что все символы, не входящие в US-ASCII, должны быть закодированы в формате Unicode (HTML-страницы до сих пор чаще всего кодируются в одной из восьмибитовых кодировок).
Например, посмотрим, как плейер трактует следующую строку с данными:
<раram name="flashvars" value="text=Bceм привет!"/>
Попробуем трассировать значение переменной text, которая должна быть создана на основной временной диаграмме фильма:
trace(text); // Выводит: 6ЯЕЛ ОПХБЕР!
Увидев подобную строку в браузере, вы, вероятно, попытались бы изменить кодировку. Но в нашем случае такая операция бессмысленна. Чтобы текст отобразился верно, его нужно подвергнуть URL-кодированию;
<param name="flashvars" value= "text=%D0%92%Dl%81%D0%B5%D0%BC%20%D0%BF%D1%80%DO%B8%DO%B2%DO%B5%D1%82%21"/>
Проверяем значение переменной:
trace(text); // Выводит: Всем привет!
На практике URL-кодирование редко проводится «вручную», В любой среде разработки, хотя бы чуть более совершенной, чем «Блокнот», для этого имеются специальные инструменты. В ActionScript и JavaScript провести URL-кодирование позволяет функция escape():
trace(escape("Привет")); // Выводит: %DO%9F%D1%30%DO%B8%DO%32%DO%B5%D1%82
При необходимости строку можно и декодировать, для чего предназначена функция unescape():
trace(unescaper("%D0%9F*D1%80%D0%B8%D0%B2%D0%B5%D1%82"); // Выводит: Привет
Еще один способ передать фильму данные из HTML-окружения заключается в использовании метода GET. При таком подходе переменные передаются в виде части URL, исходя из которого происходит импортирование фильма. Строка с переменными отделяется от основного URL символом «?».
Как вы помните, в случае тега <OBJECT> указатель на SWF-файл хранит параметр movie, Следовательно, чтобы передать данные при помощи метода GET, нужно набрать приблизительно следующий код:
<param name="movie" value="mov.swf?name=Bob&age=25&location=USA"/>
В теге <EMBED> за расположение SWF-файла отвечает атрибут src:
src="mov.swf?name=Bob&age=25&location=USA"
Строка с парами имя-значение, полученная плейером при помощи метода GET, обрабатывается точно так же, как и в случае использования для ее передачи параметра (атрибута) flashvars. Однако метод GET в силу своей природы имеет существенно больше ограничений для импортирования данных, чем flashvars:
- Во-первых, метод GET не позволяет переслать более 256 байтов информации (предел flashvars —64 Кб текста).
- Во-вторых, что более существенно, при присоединении к URL новых параметров браузер будет считать, что это ссылка на новый ресурс. Поэтому методGET снижает эффективность применения кэшированных файлов, что в случае «тяжеловесных» Flash-сайтов крайне плохо.
Кстати, метод GET можно использовать для передачи параметров, если фильм импортируется функцией load.Movie() или loadMovieNum(). Это может быть полезно, если инициализация должна зависеть от контекста.
Ярлыки:
встраивание в HTML,
метод Get,
передача параметров,
передачи внешних данных во Flash,
таг OBJECT,
flashvars,
URL кодирование
взаимодействие ActionScript2.0 и JavaScript
вызов функции JS из ActionScript - коротенький урок на английском.
важно: при тестировании флешки (уже помещенной на html страничку) , из к-рой вызывается функция, в GoogleChrome, возникли проблемы: нифига она не вызывалась. и так, и эдак, и я перекопала интернет... решила проверить в других браузерах. Firefox и Explorer сообщили о необходимости изменить настройки секьюрити для получения возможности тестирования флешки. изменила в фаерфоксе. заработали фаерфокс и эксплорер. хром продолжаем молча игнорировать.
посмотрим, что даст проверка на сервере. хочется верить...
далее текст скопирован из книжки по ActionScript2.0 Дмитрия Гурского. легко и понятно .
глава:
16.5.4. Передача команд браузеру. Функция getURL()
Функция getURL() — одна из наиболее давно разработанных и, несмотря на это, важных для практики функций ActionScript. Она начала поддерживаться еще во Flash 2, то есть задолго до того, как в оборот был введен сам термин «ActionScript». Во Flash 5 у нее появился дублирующий метод класса MovieClip.
Функция getURL() служит для решения довольно большого количества задач,
которые можно охарактеризовать как «взаимодействие с локальным окружением». Она позволяет отправлять команды браузеру, фильму Macromedia Director, операционной системе — в общем средам, которые окружают плейер, воспроизводящий фильм (в англоязычной литературе такие среды принято называть host environment). Однако для практики интерес представляют прежде всего возможности getURL() no взаимодействию с браузером. При помощи данной функции можно открыть новую HTML-страницу, отправить вызов программе электронной почты, скачать удаленный файл, задействовать любую команду JavaScript или VBScript, т. е. решить любую задачу, доступную браузеру.
В наиболее общем случае синтаксис функции getURL() следующий:
getURL("URL");
Здесь url — некая ссылка, представленная в формате, который принят в Сети для задания URL. Ее общий синтаксис: «scheme:scheme_specific_part», где:
• scheme (схема) - описывает тип взаимодействия с внешней системой, особенности которого детализируются в части scheme_specific_part URL. Это может быть некий реальный протокол (hup, ftp, https) или псевдопротокол (javascript, mailto, file, asfunction).
Ссылки с псевдопротоколами (их еще называют псевдонимами URL) предназначены для непосредственного управления системами локального окружения и не приводят к импорту данных извне (например, псевдопротокол javascript позволяет отправить браузеру команду JavaScript). Ссылка с протоколом вызовет импорт некоторых внешних данных (обычно это HTML-страницы);
• scheme_specific_part - часть URL, настолько специфичная для каждого типа взаимодействия, что однозначно ее определить невозможно. Это может быть адрес документа или файла (http, ftp), код JavaScript (javascript), имя функции ActionScript (asfunction), адрес E-mail и информация для полей письма (mailto) и т. д.
У функции getURL() иногда может быть несколько параметров. Подробнее об этом поговорим, когда будем обсуждать соответствующие случаи.
Функция getURL() может использоваться и кодом фильма, проигрываемого в автономном плейере. При этом любая команда, связанная с взаимодействием с браузером, вызовет открытие его нового окна с последующим выполнением в нем этой команды.
В табл. 16.4 приведена краткая характеристика основных команд, поддерживаемых функцией get URL(). Те из них, которые представляют для практики наибольший интерес, будут рассмотрены нами более обстоятельно ниже.
Все протоколы и псевдопротоколы, поддерживаемые функцией getURL(), могут быть использова- ны и при создании ссылок в тексте при помощи тега <А>.
Например, при нажатии ссылки, создаваемой следующим кодом, появится информационная панель браузера со строкой «Привет»:
this.createTextField("pole",0,200,200,0,0);
pole.border=pole.html=pole.autoSize=true;
pale.htmlText="Щeлкнитe по этой <B><A HREF='javascript:alert (\"Привет\")'>
ссылке </A></B>";
Подробно особенности использования тега <А> описаны в главе J3.
Загрузка HTML-страницы
Основа Всемирной паутины — гиперссылки. Именно они связывают Сеть в единое целое, без них она бы представляла собой просто огромный архив неотсортированных документов. Вряд ли можно найти сайт, на котором не было бы хотя бы одной гиперссылки.
Главная задача, для решения которой применяется функция getURL(), связана с реализацией разнообразных гиперссылок. Простейший случай — это баннер, при щелчке по которому должна быть открыта определенная страница.
Если необходимо открыть новую HTML-страницу, то функцию getURL() следует использовать в следующей форме:
getURL("URL", window);
где:
• "url" — строка с абсолютной или относительной ссылкой на НТМ L-документ. Для его дос-
тавки может быть использован как протокол http, так и https. Указывать протокол обязательно(в браузере по умолчанию применяется http, поэтому если URL вводится в адресную строку, можно не прописывать протокол);
• window — необязательный параметр, определяющий, где именно будет отображена загружаемая HTML-страница. Возможны следующие варианты window:
o _blank — документ будет открыт в новом окне браузера. Характеристики этого окна
будут соответствовать настройкам по умолчанию. Как открыть документ в окне с опре-
деленными свойствами, покажем чуть ниже, когда изучим взаимодействие SWF-
фильма с JavaScript. Например:
getURL("http://wnk.biz", _blank);
o _self — документ будет открыт в том же окне или фрейме, где располагается HTML-
страница с фильмом. Значение по умолчанию;
o _parent — загружаемый документ заместит содержимое всех фреймов того же уровня,
что и фрейм, к которому относится HTML-страница с фильмом. Если фильм отобража-
ется в окне или фрейме верхнего уровня (а так обычно и бывает), то значения «_parent»
и «_self» эквивалентны;
o _top — новая HTML-страница заместит собой все содержимое того окна браузера, к
которому относится Flash-фильм, давший команду загрузить эту страницу. Если фильм
принадлежит непосредственно окну, а не фрейму, то разницы между значениями
window «_parent», «_self», «_top» не существует;
o name — новый документ будет загружен в окно или фрейм с именем «name». Если окна или фрейма с таким именем нет, то браузер откроет новое окно, присвоит ему имя
«name» и загрузит целевой документ в него.
Например:
getURL("http://wnk.biz","left -_frame");
Имя окна или фрейма не должно начинаться с символа «_», так как это атрибут специальных значений параметра window. Также следует учитывать,; что идентификаторы окон и фреймов чувствительны к регистру.
Обычно указывается имя конкретного окна или фрейма, если содержимое! в нем должно быть обновлено по некоторому событию (например, это может быть окно поиска по базе данных).
Адресовать НТМL-документ можно как абсолютной, так и относительной ссылкой. Относительные адреса более удобны, если документ хранится там же, где и фильм, давший команду на его загрузку. Однако использовать их нужно осторожно. Дело в том, что в разных браузерах относительные ссылки при преобразовании в полные адреса могут давать разный результат (часть браузеров в качестве базиса для относительных URL использует адрес HTML-страницы, в которую встроен фильм, другие же применяют адрес, с которого был получен SWF-файл). Чтобы этого избежать, необходимо явным образом прописать базис для относительных ссылок в параметр ре base тега <OBJECT> (или одноименном атрибуте тега <ЕМBED>). Особенно полезен данный параметр,
если SWF-файл и HTML-документ, в который он встроен, относятся к разным доменам.
Например, если открываемые из фильма HTML-страницы хранятся по адресу
www.mysite.server.ru/main, то параметр (атрибут) base следует задать так:
<param name="base" value="http://www.mysite.server.ru/main"/> (тег <OBJECT>)
base=http://www.mysite.server.ru/main (тег <EMBED>)
В принципе, параметр (аргумент) base может принимать и относительные адреса! (они будут разрешаться исходя из URL страницы). Однако более надежно использовать абсолютные адреса.
Отправка данных серверу
Функция getURL() дает возможность отправить запрос удаленному приложению или серверному скрипту, Для этого используется следующий синтаксис:
getURL(location, window, method);
где
• location — абсолютный или относительный URL, адресующий необходимое приложение или скрипт
• window —параметр, определяющий, в каком окне или фрейме должен быть отображен результат обработки запроса серверным скриптом или удаленным приложением;
• method — метод передачи параметров. Flash поддерживает стандартные методы протокола HTTP, предназначенные для отправки данных на сервер: GET и POST. :
o Метод GET заключается в том, что строка с переменными присоединяется к URL,
адресующему скрипт или приложение. При этом пары имя-значение разделяются
при помощи амперсанта (&), а сама строка с переменными отделяется от основной
части URL знаком «?». Количество данных, которые можно передать, используя ме-
тод GET, обычно ограничено 256-1024 байтами (в зависимости от настроек сервера).
Если нужно переслать больший объем данных, то следует использовать метод POST.
Пример URL типа GET:
http://www .mysite.ru/cgi-bin/search?book=ActionScript&author=Gurski
Когда сервер обрабатывает этот URL, вызывается приложение search, хранящееся в
папке cgi-bin. и переменные, прописанные после знака «?», передаются ему в качест-
ве параметров.
o Метод POST отличается от метода GET тем, что переменные пересылаются отдель-
ным блоком, следующим за заголовком HTTP-запроса. В большинстве случаев ме-
тодом POST можно заменить более простой, а следовательно, надежный метод GET,
если на сервер следует передать большой объем данных. Но его нельзя использовать,
если фильм проигрывается автономным плейером, если запрос отправляется Java-сер
веру, а также если страница с фильмом отображается некоторыми браузерами (на-
пример, старыми Netscape Navigator).
У функции getURL() нет параметра, который был бы предназначен для передачи строки или массива с переменными, подлежащими пересылке на сервер. Данная функция попросту объединяет в строку все незащищенные для перечисления переменные данной временной диаграммы и отправляет ее на сервер.
Если переменная хранит величину не строкового типа, то она приводится к типу String. Например:
var a:String="ActicnScript", b:Object{}, с:Array=[1,2,3];
getURL("http://www.mysite.ru/cgi-bin/execute", "_blank", "GET");
/* Сервер получит следующий запрос:
http://www.mysite.ru/cgibin/execute?a=ActionScript&b=%5Bobject+Object%5D&c-1%2С2%2С3
*/ Исходя из того, как функция getURL() формирует запрос, ее необходимо применять по отношению к клипу, специально созданному для хранения пересылаемых данных. Иначе на сервер помимо нужных будут отправлены и все остальные переменные временной диаграммы.
Функцию getURL() следует использовать, если результат работы серверного скрипта или удаленного приложения должен быть отображен в окне браузера. Если же он должен поступить в фильм, то необходимо применить функцию loadVariables() или класс LoadVars, о которых поговорим в следующей главе.
Обращение к локальному файлу
Используя псевдопротокол file, можно открыть практически любой файл накомпью-:ре пользователя. Например, следующий код открывает документ Microsoft Word:
getURL("file://С:\\docs\\text.doc");
Обратите внимание, что обратный слеш «\» в пути к файлу нужно обязательно экранировать парным слешем, так как в ActionScript данный символ служит для задания escape-последовательностей.
Определенные ограничения связаны с запуском исполнимых приложений посредством URL типа file. При этом появляется панель безопасности, на которой пользователь должен подтвердить или запретить активизацию ехе-файла. Поэтому если приложение является частью вашего проекта, то его лучше запускать командой «exec» функции fscommand().
URL типа file имеют довольно ограниченное использование. Иногда они применяются проекторами. Например, если вы создаете оболочку для компакт-диска с книгами в формате PDF, то реализовать ссылки или кнопки, открывающие каждую из них, позволяют именно URL типа file.
Вызов программы электронной почты
Довольно часто на сайтах встречаются ссылки, задействовав которые можно отправить E-mail администратору, владельцу или службе поддержки данного ресурса. Реализуются подобные ссылки посредством псевдопротокола mailto, который поддерживается и функцией getURL().
URL типа mailto имеет следующий стандартный синтаксис:
mailto:адрес?поля
где:
• адрес — обязательная часть URL, в которой должен быть указан ящик, на который следует отправить созданное письмо. Если письмо нужно разослать сразу по нескольким адресам, то их нужно отделить друг от друга запятыми;
• поля — необязательная часть IJRL, в которой прописывается информация для полей. Большинство программ электронной почты поддерживают три поля:
o subject — этому параметру соответствует поле темы письма;
o сс — при помощи данного параметра можно указать, куда должна быть отправлена
копия письма;
o bcc — параметр, задающий адрес E-mail, по которому должна быть отправлена
скрытая копия письма.
Задавать значения для всех полей необязательно, но заполнять автоматически хотя
бы поле subject — хороший тон по отношению к посетителям вашего ресурса.
Приведем примеры вызовов нескольких URL типа mailto:
getURL("mailto:diis_ignotis@tut-by");
getURL("mailto:diis_ignotis@tut.by,dct@omen.ru"); getURL("mailto;diis_ignotis@tut.by?subject=Привет&cc=dagi@tut.by&bcc=gurski@
tut.by");
При вызове URL типа mailto запускается программа электронной почты, которая используется в системе по умолчанию. Затем автоматически создается шаблон нового письма. Поля в этом шаблоне заполняются исходя из данных, прописанных в URL.
Взаимодействие с JavaScript
Возможность организовать взаимодействие между SWF-фильмом и JavaScript появилась еще во Flash 2 (то есть в 1996 году). Подобное взаимодействие может быть двухсторонним: как ActionScript может обращаться к методам и свойствам JavaScript, так и JavaScript может отправлять команды SWF-фильму. Сейчас мы обсудим только то, как посредством getURL() можно обращаться из Flash-фильма к браузерному скрипту. Остальные вопросы из области взаимодействия JavaScript и ActionScript будут рассмотрены позже.
Если необходимо из кода ActionScript вызвать метод JavaScript или переопределить какое-то его свойство, то можно использовать функцию fscommand() или getURL(). Применение getURL() предпочтительнее, так как при этом, во-первых, не требуется создавать никаких специальных функций в коде HTML-страницы, а во-вторых, она работает в большом количестве браузеров. Однако об особенностях использования fscommand() также стоит иметь представление, поэтому
взаимодействию с JavaScript при помощи этой функции посвящен п. 16.5.5.
Функция getURL() принимает команду, которую нужно передать JavaScript, в формате URL:
getURL(javascript:script);
где:
• javascript — псевдопротокол, указывающий браузеру, что в URL содержится код JavaScript;
• script — код JavaScript, который необходимо выполнить. В простейшем случае это может быть просто вызов функции, набранной в теге <SCRIPT>. Однако столь же успешно можно вызвать и метод встроенного объекта или присвоить новое значение предопределенному свойству.
Более того, в URL типа javascript может быть записан сколь угодно большой скрипт, содержащий неограниченное количество выражений любой сложности!
Приведем несколько простых примеров:
// Строка, выводящая панель сообщений, содержащую текст "Привет!"
getURL("javascript:alert('Привет')");
// Строка, изменяющая отображаемый документ на сайт "Питера"
getURL("javascript:window.location='http://www.piter.com'");
// Строка, создающая функцию, а затем выэывающая ее
getURL("javascript:function func(par) {return par};
alert(func('Привет'));");
Если попытаться выполнить команду JavaScript в автономном плейере, то будет открыто новое окно браузера и команда будет передана в него.
Успешность взаимодействия SWF-фильма с JavaScript зависит от браузера. В ряде старых браузеров (например, Internet Explorer 4 для Macintosh) попытка дать команду JavaScript при помощи getURL() окажется неудачной. Однако во всех современных браузерах (старше четвертого поколения) взаимодействие между ActionScript и JavaScript возможно в полном объеме.
По умолчанию getURL() может обращаться к скрипту страницы лишь в том случае, если она была получена с того же поддомена, что и SWF-фильм. Обойти это ограничение можно, присвоив значение «always» специальному параметру allowscriptaccess тега <OBJECT> (или одноименному ат-рибуту тега <EMBED>).
Даже если вы не владеете JavaScript, то вы сможете писать небольшие программы на этом языке, пользуясь одним лишь справочником. Дело в том, что в основе JavaScript и ActionScript лежит один стандарт— ЕСМА-262. Поэтому данные языки очень близки. У них один синтаксис, одни управляющие структуры, одна модель объектно-ориентированного программирования. Даже многие предопределенные классы и глобальные функции у JavaScript и ActionScript общие. Если ис-
пользовать только те элементы языка, которые описаны в ЕСМА-262, то один и тот же код можно одинаково успешно выполнить как во Flash-плейере, так и в браузере.
Возможность взаимодействия с JavaScript чрезвычайно важна для практики. Используя се, можно столь тесно интегрировать браузер и Flash-сайт, что последний будет обладать всеми позитивными качествами HTML-страниц. JavaScript помогает преодолеть недостатки, связанные с тем, что Flash не является традиционной Web-технологией.
К примеру, легко сделать так, чтобы при наведении указателя мыши на ссылку в строке состояния браузера отображалось, куда она ведет:
// Клип ban — это баннер дружественного ресурса
// Создаем функцию, которая будет выводить в строку состояния значение,
// переданное ей в качестве параметра
getURL ("javascript:function setStatus(par) {window.status=par;}");
// При пересечении указателем мыши границы баннера, ссылка на сайт должна
// быть отображена в строке состояния
ban.onRollOver=function():Void {
getURL("javascript:setStatus('http://www.flasher.ru');");
};
// При выходе указателя за пределы баннера значение в строке состояния
// должно быть заменено на принятое по умолчанию
ban.onRollOut=function():Void {
getURL("javascript:setStatus(window.defaultStatus);");
};
Закрыть окно браузера, в котором отображается проект, можно следующей строкой:
getURL("javascript:window.close();");
Если HTML-страница открывается getURL() напрямую, то невозможно произвольно задать характеристики окна браузера, в котором она будет отображена. Окно визуализируется исходя из установок, принятых по умолчанию. Иногда же бывает желательно, чтобы по размерам оно совпадало с встроенным в страницу SWF-фильмом, или чтобы его размеры нельзя было изменить, или же чтобы в нем не было строки меню (самый простой способ «победить» слабую согласованность Flash-сайта с браузером — это просто убрать меню с кнопками навигации и прочими «опасными» элементами). Решить все эти, а также многие другие задачи можно, открыв HTML-страницу посредством метода window.open() JavaScript.
Для примера приведем код, открывающий HTML-страницу в немасштабируемом окне 300 х 300 пикселей.
getURL("javascript:void window.open('http://www.flasher.ru', null,
'width=300, height=300, menubar, status')");
Если страница с фильмом отображается в Internet Explorer, то ее легко можно перевести в полноэкранный режим (это может быть полезно в случае игр и заставок):
getURL("javascript:void window.open('http://www.flasher.ru/forum', null,
'fullscreen')");
Возможности JavaScript по управлению окном браузера куда шире, чем аналогичные возможности ActionScript в отношении окна автономного плейера. В частности, размер окна браузера можно легко изменить.
Следующий код при нажатии кнопки but увеличивает окно, в котором отобража-
ется документе фильмом, на 100 пикселей по горизонтали и на 50 по вертикали:
but.onRelease=function():Void {
getURL("javascript:window.resizeBy(100, 50)"); };
Об огромных возможностях JavaScript говорит то, что с его помощью можно легко перемещать окно браузера.
Следующий код заставляет вращаться по кругу окно, в котором отображается HTML-документе SWF-фильмом;
var i:Number=0;
this.onEnterFrame=function():Void {
var x:Number=300+200*Math.cos(i*Math.PI/30);
var y:Number=300+200*Math.sin(i*Math.PI/30);
getURL("javascript:window.moveTo("+x+","+y+");");
i++;
};
Используя JavaScript, можно динамически изменять ширину и высоту области отображения, се
выравнивание и прочие параметры SWF-фильма как внедренного в HTML-страницу объекта. Чтобы воспользоваться этой возможностью, необходимо присвоить фильму уникальный идентификатор. Для этого у тега <OBJECT> имеется атрибут id, а у тега <EMBED> — атрибут name. Присвоив фильму имя, к нему можно обращаться точно так же, как к предопределенным объектам JavaScript.
Для примера создадим код, который будет при нажатии кнопки but изменять размеры
области отображения фильма исходя из значений, введенных пользователем в поля w (ширина) и h (высота):
// Функция, служащая для задания размеров объекта с именем name
getURL("javascript:function setSize(name, n_w, n_h) { this[name).width=n_w,
this[name].height=n_h}");
// Изменяем размер области отображения данного фильма (назовем его mov)
but.onPress=function():Void {
getURL("javascript:setSize('mov',"+w.text+", "+h.text+");");
};
Интересных примеров взаимодействия ActionScript и JavaScript можно привести еще очень много. Но, увы, объем книги ограничен. Поэтому если вас заинтересовал данный вопрос, вооружитесь справочником по JavaScript и экспериментируйте. То, что вы не заскучаете, гарантировано.
важно: при тестировании флешки (уже помещенной на html страничку) , из к-рой вызывается функция, в GoogleChrome, возникли проблемы: нифига она не вызывалась. и так, и эдак, и я перекопала интернет... решила проверить в других браузерах. Firefox и Explorer сообщили о необходимости изменить настройки секьюрити для получения возможности тестирования флешки. изменила в фаерфоксе. заработали фаерфокс и эксплорер. хром продолжаем молча игнорировать.
посмотрим, что даст проверка на сервере. хочется верить...
далее текст скопирован из книжки по ActionScript2.0 Дмитрия Гурского. легко и понятно .
глава:
16.5.4. Передача команд браузеру. Функция getURL()
Функция getURL() — одна из наиболее давно разработанных и, несмотря на это, важных для практики функций ActionScript. Она начала поддерживаться еще во Flash 2, то есть задолго до того, как в оборот был введен сам термин «ActionScript». Во Flash 5 у нее появился дублирующий метод класса MovieClip.
Функция getURL() служит для решения довольно большого количества задач,
которые можно охарактеризовать как «взаимодействие с локальным окружением». Она позволяет отправлять команды браузеру, фильму Macromedia Director, операционной системе — в общем средам, которые окружают плейер, воспроизводящий фильм (в англоязычной литературе такие среды принято называть host environment). Однако для практики интерес представляют прежде всего возможности getURL() no взаимодействию с браузером. При помощи данной функции можно открыть новую HTML-страницу, отправить вызов программе электронной почты, скачать удаленный файл, задействовать любую команду JavaScript или VBScript, т. е. решить любую задачу, доступную браузеру.
В наиболее общем случае синтаксис функции getURL() следующий:
getURL("URL");
Здесь url — некая ссылка, представленная в формате, который принят в Сети для задания URL. Ее общий синтаксис: «scheme:scheme_specific_part», где:
• scheme (схема) - описывает тип взаимодействия с внешней системой, особенности которого детализируются в части scheme_specific_part URL. Это может быть некий реальный протокол (hup, ftp, https) или псевдопротокол (javascript, mailto, file, asfunction).
Ссылки с псевдопротоколами (их еще называют псевдонимами URL) предназначены для непосредственного управления системами локального окружения и не приводят к импорту данных извне (например, псевдопротокол javascript позволяет отправить браузеру команду JavaScript). Ссылка с протоколом вызовет импорт некоторых внешних данных (обычно это HTML-страницы);
• scheme_specific_part - часть URL, настолько специфичная для каждого типа взаимодействия, что однозначно ее определить невозможно. Это может быть адрес документа или файла (http, ftp), код JavaScript (javascript), имя функции ActionScript (asfunction), адрес E-mail и информация для полей письма (mailto) и т. д.
У функции getURL() иногда может быть несколько параметров. Подробнее об этом поговорим, когда будем обсуждать соответствующие случаи.
Функция getURL() может использоваться и кодом фильма, проигрываемого в автономном плейере. При этом любая команда, связанная с взаимодействием с браузером, вызовет открытие его нового окна с последующим выполнением в нем этой команды.
В табл. 16.4 приведена краткая характеристика основных команд, поддерживаемых функцией get URL(). Те из них, которые представляют для практики наибольший интерес, будут рассмотрены нами более обстоятельно ниже.
Все протоколы и псевдопротоколы, поддерживаемые функцией getURL(), могут быть использова- ны и при создании ссылок в тексте при помощи тега <А>.
Например, при нажатии ссылки, создаваемой следующим кодом, появится информационная панель браузера со строкой «Привет»:
this.createTextField("pole",0,200,200,0,0);
pole.border=pole.html=pole.autoSize=true;
pale.htmlText="Щeлкнитe по этой <B><A HREF='javascript:alert (\"Привет\")'>
ссылке </A></B>";
Подробно особенности использования тега <А> описаны в главе J3.
Загрузка HTML-страницы
Основа Всемирной паутины — гиперссылки. Именно они связывают Сеть в единое целое, без них она бы представляла собой просто огромный архив неотсортированных документов. Вряд ли можно найти сайт, на котором не было бы хотя бы одной гиперссылки.
Главная задача, для решения которой применяется функция getURL(), связана с реализацией разнообразных гиперссылок. Простейший случай — это баннер, при щелчке по которому должна быть открыта определенная страница.
Если необходимо открыть новую HTML-страницу, то функцию getURL() следует использовать в следующей форме:
getURL("URL", window);
где:
• "url" — строка с абсолютной или относительной ссылкой на НТМ L-документ. Для его дос-
тавки может быть использован как протокол http, так и https. Указывать протокол обязательно(в браузере по умолчанию применяется http, поэтому если URL вводится в адресную строку, можно не прописывать протокол);
• window — необязательный параметр, определяющий, где именно будет отображена загружаемая HTML-страница. Возможны следующие варианты window:
o _blank — документ будет открыт в новом окне браузера. Характеристики этого окна
будут соответствовать настройкам по умолчанию. Как открыть документ в окне с опре-
деленными свойствами, покажем чуть ниже, когда изучим взаимодействие SWF-
фильма с JavaScript. Например:
getURL("http://wnk.biz", _blank);
o _self — документ будет открыт в том же окне или фрейме, где располагается HTML-
страница с фильмом. Значение по умолчанию;
o _parent — загружаемый документ заместит содержимое всех фреймов того же уровня,
что и фрейм, к которому относится HTML-страница с фильмом. Если фильм отобража-
ется в окне или фрейме верхнего уровня (а так обычно и бывает), то значения «_parent»
и «_self» эквивалентны;
o _top — новая HTML-страница заместит собой все содержимое того окна браузера, к
которому относится Flash-фильм, давший команду загрузить эту страницу. Если фильм
принадлежит непосредственно окну, а не фрейму, то разницы между значениями
window «_parent», «_self», «_top» не существует;
o name — новый документ будет загружен в окно или фрейм с именем «name». Если окна или фрейма с таким именем нет, то браузер откроет новое окно, присвоит ему имя
«name» и загрузит целевой документ в него.
Например:
getURL("http://wnk.biz","left -_frame");
Имя окна или фрейма не должно начинаться с символа «_», так как это атрибут специальных значений параметра window. Также следует учитывать,; что идентификаторы окон и фреймов чувствительны к регистру.
Обычно указывается имя конкретного окна или фрейма, если содержимое! в нем должно быть обновлено по некоторому событию (например, это может быть окно поиска по базе данных).
Адресовать НТМL-документ можно как абсолютной, так и относительной ссылкой. Относительные адреса более удобны, если документ хранится там же, где и фильм, давший команду на его загрузку. Однако использовать их нужно осторожно. Дело в том, что в разных браузерах относительные ссылки при преобразовании в полные адреса могут давать разный результат (часть браузеров в качестве базиса для относительных URL использует адрес HTML-страницы, в которую встроен фильм, другие же применяют адрес, с которого был получен SWF-файл). Чтобы этого избежать, необходимо явным образом прописать базис для относительных ссылок в параметр ре base тега <OBJECT> (или одноименном атрибуте тега <ЕМBED>). Особенно полезен данный параметр,
если SWF-файл и HTML-документ, в который он встроен, относятся к разным доменам.
Например, если открываемые из фильма HTML-страницы хранятся по адресу
www.mysite.server.ru/main, то параметр (атрибут) base следует задать так:
<param name="base" value="http://www.mysite.server.ru/main"/> (тег <OBJECT>)
base=http://www.mysite.server.ru/main (тег <EMBED>)
В принципе, параметр (аргумент) base может принимать и относительные адреса! (они будут разрешаться исходя из URL страницы). Однако более надежно использовать абсолютные адреса.
Отправка данных серверу
Функция getURL() дает возможность отправить запрос удаленному приложению или серверному скрипту, Для этого используется следующий синтаксис:
getURL(location, window, method);
где
• location — абсолютный или относительный URL, адресующий необходимое приложение или скрипт
• window —параметр, определяющий, в каком окне или фрейме должен быть отображен результат обработки запроса серверным скриптом или удаленным приложением;
• method — метод передачи параметров. Flash поддерживает стандартные методы протокола HTTP, предназначенные для отправки данных на сервер: GET и POST. :
o Метод GET заключается в том, что строка с переменными присоединяется к URL,
адресующему скрипт или приложение. При этом пары имя-значение разделяются
при помощи амперсанта (&), а сама строка с переменными отделяется от основной
части URL знаком «?». Количество данных, которые можно передать, используя ме-
тод GET, обычно ограничено 256-1024 байтами (в зависимости от настроек сервера).
Если нужно переслать больший объем данных, то следует использовать метод POST.
Пример URL типа GET:
http://www .mysite.ru/cgi-bin/search?book=ActionScript&author=Gurski
Когда сервер обрабатывает этот URL, вызывается приложение search, хранящееся в
папке cgi-bin. и переменные, прописанные после знака «?», передаются ему в качест-
ве параметров.
o Метод POST отличается от метода GET тем, что переменные пересылаются отдель-
ным блоком, следующим за заголовком HTTP-запроса. В большинстве случаев ме-
тодом POST можно заменить более простой, а следовательно, надежный метод GET,
если на сервер следует передать большой объем данных. Но его нельзя использовать,
если фильм проигрывается автономным плейером, если запрос отправляется Java-сер
веру, а также если страница с фильмом отображается некоторыми браузерами (на-
пример, старыми Netscape Navigator).
У функции getURL() нет параметра, который был бы предназначен для передачи строки или массива с переменными, подлежащими пересылке на сервер. Данная функция попросту объединяет в строку все незащищенные для перечисления переменные данной временной диаграммы и отправляет ее на сервер.
Если переменная хранит величину не строкового типа, то она приводится к типу String. Например:
var a:String="ActicnScript", b:Object{}, с:Array=[1,2,3];
getURL("http://www.mysite.ru/cgi-bin/execute", "_blank", "GET");
/* Сервер получит следующий запрос:
http://www.mysite.ru/cgibin/execute?a=ActionScript&b=%5Bobject+Object%5D&c-1%2С2%2С3
*/ Исходя из того, как функция getURL() формирует запрос, ее необходимо применять по отношению к клипу, специально созданному для хранения пересылаемых данных. Иначе на сервер помимо нужных будут отправлены и все остальные переменные временной диаграммы.
Функцию getURL() следует использовать, если результат работы серверного скрипта или удаленного приложения должен быть отображен в окне браузера. Если же он должен поступить в фильм, то необходимо применить функцию loadVariables() или класс LoadVars, о которых поговорим в следующей главе.
Обращение к локальному файлу
Используя псевдопротокол file, можно открыть практически любой файл накомпью-:ре пользователя. Например, следующий код открывает документ Microsoft Word:
getURL("file://С:\\docs\\text.doc");
Обратите внимание, что обратный слеш «\» в пути к файлу нужно обязательно экранировать парным слешем, так как в ActionScript данный символ служит для задания escape-последовательностей.
Определенные ограничения связаны с запуском исполнимых приложений посредством URL типа file. При этом появляется панель безопасности, на которой пользователь должен подтвердить или запретить активизацию ехе-файла. Поэтому если приложение является частью вашего проекта, то его лучше запускать командой «exec» функции fscommand().
URL типа file имеют довольно ограниченное использование. Иногда они применяются проекторами. Например, если вы создаете оболочку для компакт-диска с книгами в формате PDF, то реализовать ссылки или кнопки, открывающие каждую из них, позволяют именно URL типа file.
Вызов программы электронной почты
Довольно часто на сайтах встречаются ссылки, задействовав которые можно отправить E-mail администратору, владельцу или службе поддержки данного ресурса. Реализуются подобные ссылки посредством псевдопротокола mailto, который поддерживается и функцией getURL().
URL типа mailto имеет следующий стандартный синтаксис:
mailto:адрес?поля
где:
• адрес — обязательная часть URL, в которой должен быть указан ящик, на который следует отправить созданное письмо. Если письмо нужно разослать сразу по нескольким адресам, то их нужно отделить друг от друга запятыми;
• поля — необязательная часть IJRL, в которой прописывается информация для полей. Большинство программ электронной почты поддерживают три поля:
o subject — этому параметру соответствует поле темы письма;
o сс — при помощи данного параметра можно указать, куда должна быть отправлена
копия письма;
o bcc — параметр, задающий адрес E-mail, по которому должна быть отправлена
скрытая копия письма.
Задавать значения для всех полей необязательно, но заполнять автоматически хотя
бы поле subject — хороший тон по отношению к посетителям вашего ресурса.
Приведем примеры вызовов нескольких URL типа mailto:
getURL("mailto:diis_ignotis@tut-by");
getURL("mailto:diis_ignotis@tut.by,dct@omen.ru"); getURL("mailto;diis_ignotis@tut.by?subject=Привет&cc=dagi@tut.by&bcc=gurski@
tut.by");
При вызове URL типа mailto запускается программа электронной почты, которая используется в системе по умолчанию. Затем автоматически создается шаблон нового письма. Поля в этом шаблоне заполняются исходя из данных, прописанных в URL.
Взаимодействие с JavaScript
Возможность организовать взаимодействие между SWF-фильмом и JavaScript появилась еще во Flash 2 (то есть в 1996 году). Подобное взаимодействие может быть двухсторонним: как ActionScript может обращаться к методам и свойствам JavaScript, так и JavaScript может отправлять команды SWF-фильму. Сейчас мы обсудим только то, как посредством getURL() можно обращаться из Flash-фильма к браузерному скрипту. Остальные вопросы из области взаимодействия JavaScript и ActionScript будут рассмотрены позже.
Если необходимо из кода ActionScript вызвать метод JavaScript или переопределить какое-то его свойство, то можно использовать функцию fscommand() или getURL(). Применение getURL() предпочтительнее, так как при этом, во-первых, не требуется создавать никаких специальных функций в коде HTML-страницы, а во-вторых, она работает в большом количестве браузеров. Однако об особенностях использования fscommand() также стоит иметь представление, поэтому
взаимодействию с JavaScript при помощи этой функции посвящен п. 16.5.5.
Функция getURL() принимает команду, которую нужно передать JavaScript, в формате URL:
getURL(javascript:script);
где:
• javascript — псевдопротокол, указывающий браузеру, что в URL содержится код JavaScript;
• script — код JavaScript, который необходимо выполнить. В простейшем случае это может быть просто вызов функции, набранной в теге <SCRIPT>. Однако столь же успешно можно вызвать и метод встроенного объекта или присвоить новое значение предопределенному свойству.
Более того, в URL типа javascript может быть записан сколь угодно большой скрипт, содержащий неограниченное количество выражений любой сложности!
Приведем несколько простых примеров:
// Строка, выводящая панель сообщений, содержащую текст "Привет!"
getURL("javascript:alert('Привет')");
// Строка, изменяющая отображаемый документ на сайт "Питера"
getURL("javascript:window.location='http://www.piter.com'");
// Строка, создающая функцию, а затем выэывающая ее
getURL("javascript:function func(par) {return par};
alert(func('Привет'));");
Если попытаться выполнить команду JavaScript в автономном плейере, то будет открыто новое окно браузера и команда будет передана в него.
Успешность взаимодействия SWF-фильма с JavaScript зависит от браузера. В ряде старых браузеров (например, Internet Explorer 4 для Macintosh) попытка дать команду JavaScript при помощи getURL() окажется неудачной. Однако во всех современных браузерах (старше четвертого поколения) взаимодействие между ActionScript и JavaScript возможно в полном объеме.
По умолчанию getURL() может обращаться к скрипту страницы лишь в том случае, если она была получена с того же поддомена, что и SWF-фильм. Обойти это ограничение можно, присвоив значение «always» специальному параметру allowscriptaccess тега <OBJECT> (или одноименному ат-рибуту тега <EMBED>).
Даже если вы не владеете JavaScript, то вы сможете писать небольшие программы на этом языке, пользуясь одним лишь справочником. Дело в том, что в основе JavaScript и ActionScript лежит один стандарт— ЕСМА-262. Поэтому данные языки очень близки. У них один синтаксис, одни управляющие структуры, одна модель объектно-ориентированного программирования. Даже многие предопределенные классы и глобальные функции у JavaScript и ActionScript общие. Если ис-
пользовать только те элементы языка, которые описаны в ЕСМА-262, то один и тот же код можно одинаково успешно выполнить как во Flash-плейере, так и в браузере.
Возможность взаимодействия с JavaScript чрезвычайно важна для практики. Используя се, можно столь тесно интегрировать браузер и Flash-сайт, что последний будет обладать всеми позитивными качествами HTML-страниц. JavaScript помогает преодолеть недостатки, связанные с тем, что Flash не является традиционной Web-технологией.
К примеру, легко сделать так, чтобы при наведении указателя мыши на ссылку в строке состояния браузера отображалось, куда она ведет:
// Клип ban — это баннер дружественного ресурса
// Создаем функцию, которая будет выводить в строку состояния значение,
// переданное ей в качестве параметра
getURL ("javascript:function setStatus(par) {window.status=par;}");
// При пересечении указателем мыши границы баннера, ссылка на сайт должна
// быть отображена в строке состояния
ban.onRollOver=function():Void {
getURL("javascript:setStatus('http://www.flasher.ru');");
};
// При выходе указателя за пределы баннера значение в строке состояния
// должно быть заменено на принятое по умолчанию
ban.onRollOut=function():Void {
getURL("javascript:setStatus(window.defaultStatus);");
};
Закрыть окно браузера, в котором отображается проект, можно следующей строкой:
getURL("javascript:window.close();");
Если HTML-страница открывается getURL() напрямую, то невозможно произвольно задать характеристики окна браузера, в котором она будет отображена. Окно визуализируется исходя из установок, принятых по умолчанию. Иногда же бывает желательно, чтобы по размерам оно совпадало с встроенным в страницу SWF-фильмом, или чтобы его размеры нельзя было изменить, или же чтобы в нем не было строки меню (самый простой способ «победить» слабую согласованность Flash-сайта с браузером — это просто убрать меню с кнопками навигации и прочими «опасными» элементами). Решить все эти, а также многие другие задачи можно, открыв HTML-страницу посредством метода window.open() JavaScript.
Для примера приведем код, открывающий HTML-страницу в немасштабируемом окне 300 х 300 пикселей.
getURL("javascript:void window.open('http://www.flasher.ru', null,
'width=300, height=300, menubar, status')");
Если страница с фильмом отображается в Internet Explorer, то ее легко можно перевести в полноэкранный режим (это может быть полезно в случае игр и заставок):
getURL("javascript:void window.open('http://www.flasher.ru/forum', null,
'fullscreen')");
Возможности JavaScript по управлению окном браузера куда шире, чем аналогичные возможности ActionScript в отношении окна автономного плейера. В частности, размер окна браузера можно легко изменить.
Следующий код при нажатии кнопки but увеличивает окно, в котором отобража-
ется документе фильмом, на 100 пикселей по горизонтали и на 50 по вертикали:
but.onRelease=function():Void {
getURL("javascript:window.resizeBy(100, 50)"); };
Об огромных возможностях JavaScript говорит то, что с его помощью можно легко перемещать окно браузера.
Следующий код заставляет вращаться по кругу окно, в котором отображается HTML-документе SWF-фильмом;
var i:Number=0;
this.onEnterFrame=function():Void {
var x:Number=300+200*Math.cos(i*Math.PI/30);
var y:Number=300+200*Math.sin(i*Math.PI/30);
getURL("javascript:window.moveTo("+x+","+y+");");
i++;
};
Используя JavaScript, можно динамически изменять ширину и высоту области отображения, се
выравнивание и прочие параметры SWF-фильма как внедренного в HTML-страницу объекта. Чтобы воспользоваться этой возможностью, необходимо присвоить фильму уникальный идентификатор. Для этого у тега <OBJECT> имеется атрибут id, а у тега <EMBED> — атрибут name. Присвоив фильму имя, к нему можно обращаться точно так же, как к предопределенным объектам JavaScript.
Для примера создадим код, который будет при нажатии кнопки but изменять размеры
области отображения фильма исходя из значений, введенных пользователем в поля w (ширина) и h (высота):
// Функция, служащая для задания размеров объекта с именем name
getURL("javascript:function setSize(name, n_w, n_h) { this[name).width=n_w,
this[name].height=n_h}");
// Изменяем размер области отображения данного фильма (назовем его mov)
but.onPress=function():Void {
getURL("javascript:setSize('mov',"+w.text+", "+h.text+");");
};
Интересных примеров взаимодействия ActionScript и JavaScript можно привести еще очень много. Но, увы, объем книги ограничен. Поэтому если вас заинтересовал данный вопрос, вооружитесь справочником по JavaScript и экспериментируйте. То, что вы не заскучаете, гарантировано.
31 августа 2012
JavaScript: массив
Array
(описание массивов со всеми свойствами и методами)
если обычная переменная - это
контейнер для хранения чисового или строчного значения,
то массив - это контейнер состоящий из некоторого количества ячеек, в каждой из которых может храниться свое значение.
для создания нового массива, его нужно "объявить":
var myArray=new Array()
мы создаем экземпляр объекта массив (если я правильно понимаю, имеется встроенный объект array, уже обладающий нужными нам свойствами. мы объявляем, что наша переменная будет его экземпляром)
каждому значению, которое заносится в массив присваивается уникальный идентификатор, по которому вы затем сможете обращаться к данному элементу внутри массива.
итак, в нашем массиве myArray имеется некоторое количество ячеек, которые обозначаются
myArray[0] myArray[1] myArray[2] и т.д.
важно: нумерация ячеек массива начинается с нуля.
важно: переменная со строчным значением уже является массивом.
т.е. если у нас имеется var Variable="write somthing ",
то Variable[0]="w" Variable[1]="r" Variable[2]="i"
для получения (возврата) количества элементов используется свойство массива length: Variable.length
скриптик для написания фразы задом наперед:
я делала это так:
- ввести текст с клавиатуры
- ввести переменную, содержащую этот текст - мы уже знаем, что она заведомо будет массивом
- ввести новый массив, в котором мы разместим текст наоборот
- запустить цикл, перекладывающий каждый элемент исходного массива в новый в обратном порядке
- вывести полученный результат на экран
var inputStrip = prompt ("Напишите слово или предложение","Здесь");
/* promt метод бвызывающий окно запроса:
вот формат запроса:
var variable_name = prompt("Текст в окне","Текст в строке ввода")
переменная inputStrip примет значение, которое будет введено вместа слова "здесь" */
document.write("Вы написали " + "<br>" + inputStrip + "<br>" );
/* вывод на экран исходного текста*/
var invert=new Array() // объявление нового массива
for(i=inputStrip.length-1, z=0; i>=0, z<inputStrip.length ;i--, z++ ){
/* переменная i в цикле изменяется от последнего индекса массива к первому.
переменная z наоборот.*/
переменная z наоборот.*/
invert[z]=inputStrip[i] // переносим содержимое первого массива во второй в обратном порядке
document.write(invert[z] + ","); // распечатываем
}
</script>
30 августа 2012
JavaScript: переменные: переменные
Variables.
если в сценарий требуется поместить некое значение или текст, понадобится "сосуд", некое вместилище. в JavaScript оно называется переменная (variable).
перед использованием переменной, ее нужно "объявить":
var myVariable
var объявляет, что следующим словом будет имя переменной.
для удобства можно давать переменной значимое имя
важно: в имени переменной нельзя использовать пробелы, операторы, ключевые слова.
можно для удобства использовать заглавные буквы. н-р: MyVariable
регистр имеет значение для JavaScript, следовательно, если вы назвали переменную Dog, то буква D каждый раз должна быть заглавной, иначе браузер посчитает их за два разных слова.
var объявляет, что следующим словом будет имя переменной.
для удобства можно давать переменной значимое имя
важно: в имени переменной нельзя использовать пробелы, операторы, ключевые слова.
можно для удобства использовать заглавные буквы. н-р: MyVariable
регистр имеет значение для JavaScript, следовательно, если вы назвали переменную Dog, то буква D каждый раз должна быть заглавной, иначе браузер посчитает их за два разных слова.
после этого в "myVariable" можно помещать текст или число.
если вы знаете заранее, что нужно поместить в наш "контейнер", можно после переменной поместить знак "=" и значение или команду
var myVariable=267 или var myVariable="Hello World!"
или var myVariable=prompt ("Напишите свое имя","Здесь");/* эту команду рассмотрим чуть позже*/
или var myVariable=prompt ("Напишите свое имя","Здесь");/* эту команду рассмотрим чуть позже*/
важно: текст должен быть в кавычках. для JavaScript это единственный способ распознать разницу между буквами и цифрами.
267 и "267" не одно и то же: число, взятое в кавычки будет распознано как цифры (значки, буквы), но не как число.
JavaScript не придирчив к типам переменных: поместив в переменную строку (string) н-р "Hello World!", в другой раз можно поместить в нее же число.
важно: переменная, объявленная внутри функции локальная - ее невозможно использовать вне этой функции.
важно: переменная, объявленная внутри функции локальная - ее невозможно использовать вне этой функции.
29 августа 2012
JavaScript: события (events), урок 4
урок 4
События (event) и обработчики событий (event handler) относятся к JavaScript, но они скорее «встроены» в HTML-код, а не существуют самостоятельно, как те скрипты, которые мы с вами разбирали. Они входят в структуру документа НТМL, не требуя команд <SCRIPT> и </SCRIPT>. Сами они не скрипты, а скорее область взаимодействия между вашей страницей и читателем.
События — это то, что происходит.
код из этого урока:
важно: этот код - одна строка
<A HREF="http://www.newmail.ru" onMouseOver="window.status='Бесплатный хостинг'; return true">Ссылка</A>
что должно получиться:

открываем в эксплорере:
получаем окошко со ссылкой
наводим курсор на ссылку - в нижней левой части окна высвечивается надпись "бесплатный хостинг".
при проверке в Google Chrome у меня почему-то высветилась не надпись, а адрес перехода www.newmail.ru , причем когда я уводила курсор со ссылки, исчезал и адрес
о, нашла: кажется, свойство status (будет рассмотрено ниже) не поддерживается стандартной конфигурацией основных браузеров. (Window status Property)
разбираем код:
<A HREF="http://www.newmail.ru" - это обычный html
<a href="URL">...</a> (описание тага) задает адрес документа, на который надо перейти
onMouseOver="..." событие произойдет, когда мышка пользователя будет над элементом
window.status= 'Бесплатный хостинг' первое слово, как обычно - объект, но status после точки - существительное, а не глагол, а значит - не метод.
object.method - объект.метод воздействия на объект: глагол (н-р write- писать)
<A HREF="http://www.newmail.ru" onMouseOver="window.status='Бесплатный хостинг'; return true">Ссылка</A>
при наведении курсора на слово "ссылка", являющееся ссылкой, отправляющей по адресу http://www.newmail.ru, в статус баре браузера высвечиваются слова "бесплатный хостинг"
упустили только return /возвращать, давать ответ, вновь возвращаться/
return используется только в функциях
для использования функции return необходим
следующая информация взята отсюда
return используется в функциях в двух случаях:
1. если мы хотим, чтобы скрипт престал исполняться, когда происходит что-то определенное
2. если мы хотим, чтобы функция "возвращала" значение ( return a value) при обращении к ней /а иначе зачем эта функция нужна?/. т.е. "возвращенное значение" - это тот результат, для получения которого, собсно, и пишется функция.
function addVAT(value){
var newValue
newValue=value*1.07
return newValue
}
первая строка: мы объявляем функцию, которая может принимать значение value;
вторая строка: мы объявляем переменную по имени newValue , значение которой будет результатом нашего уравнения;
третья строка: мы умножаем значение функции на 1.07 (7% налога);
четвертая строка: мы "возвращаем" результат нашего уравнения функции, которая "вызывает" нашу функцию
теперь, когда нужно добавить налог в другую функцию, можно написать что-то вроде:
vatAdded=addVAT(общая сумма)
таким образом мы вызываем функцию addVAT(value), подставляя на место value новое значение общая сумма
и функция "возвращает" нам результат с добавлением налога, для нового значения, которое мы назвали "общая сумма"
как правило, функции значительно сложнее, и данная техника при правильном использовании может сэкономить часы и даже дни работы. в начале процесса написания сценария (скрипта) нужно задать себе вопрос, можно ли какие-либо части выделить в отдельную функцию (рабочий блок).
в нем имеется проблема: первый и второй "if" . в некоторых ситуациях можно получить непредсказуемый результат.
проблема решается так:
<script type="text/javascript">
<!--
function makeHidden(){
if (document.getElementById){
document.getElementById("layer1").style.visibility="hidden"
return
}
if(document.all){
document.all["layer1"].style.visibility="hidden"
}
if(document.layers){
document.layers["layer1"].visibility="hidden"
}
}
// -->
</script>
в случае, если первый "if" сработает (окажется верным), return прекратит исполнение следующих пунктов сценария.
События (event) и обработчики событий (event handler) относятся к JavaScript, но они скорее «встроены» в HTML-код, а не существуют самостоятельно, как те скрипты, которые мы с вами разбирали. Они входят в структуру документа НТМL, не требуя команд <SCRIPT> и </SCRIPT>. Сами они не скрипты, а скорее область взаимодействия между вашей страницей и читателем.
События — это то, что происходит.
код из этого урока:
важно: этот код - одна строка
<A HREF="http://www.newmail.ru" onMouseOver="window.status='Бесплатный хостинг'; return true">Ссылка</A>
что должно получиться:
получаем окошко со ссылкой
наводим курсор на ссылку - в нижней левой части окна высвечивается надпись "бесплатный хостинг".
при проверке в Google Chrome у меня почему-то высветилась не надпись, а адрес перехода www.newmail.ru , причем когда я уводила курсор со ссылки, исчезал и адрес
о, нашла: кажется, свойство status (будет рассмотрено ниже) не поддерживается стандартной конфигурацией основных браузеров. (Window status Property)
разбираем код:
<A HREF="http://www.newmail.ru" - это обычный html
<a href="URL">...</a> (описание тага) задает адрес документа, на который надо перейти
onMouseOver="..." событие произойдет, когда мышка пользователя будет над элементом
window.status= 'Бесплатный хостинг' первое слово, как обычно - объект, но status после точки - существительное, а не глагол, а значит - не метод.
object.method - объект.метод воздействия на объект: глагол (н-р write- писать)
object.property - объект.свойство объекта: существительное.
итак, status - свойство объекта window (описание Window Object ) , которое влияет на текст в статус баре, находящемся в нижней части окна браузера (на данном этапе кажется мне зверски "полезной" штукой. особенно с учетом проблематичности в использовании... но, господа, главное понять принцип, а полезные свойства и методы подберем потом сами)
итак, читаем код<A HREF="http://www.newmail.ru" onMouseOver="window.status='Бесплатный хостинг'; return true">Ссылка</A>
при наведении курсора на слово "ссылка", являющееся ссылкой, отправляющей по адресу http://www.newmail.ru, в статус баре браузера высвечиваются слова "бесплатный хостинг"
упустили только return /возвращать, давать ответ, вновь возвращаться/
return используется только в функциях
для использования функции return необходим
следующая информация взята отсюда
return используется в функциях в двух случаях:
1. если мы хотим, чтобы скрипт престал исполняться, когда происходит что-то определенное
2. если мы хотим, чтобы функция "возвращала" значение ( return a value) при обращении к ней /а иначе зачем эта функция нужна?/. т.е. "возвращенное значение" - это тот результат, для получения которого, собсно, и пишется функция.
- для освоения JavaScript важно уметь разделить код на удобные для использования блоки.
function addVAT(value){
var newValue
newValue=value*1.07
return newValue
}
первая строка: мы объявляем функцию, которая может принимать значение value;
вторая строка: мы объявляем переменную по имени newValue , значение которой будет результатом нашего уравнения;
третья строка: мы умножаем значение функции на 1.07 (7% налога);
четвертая строка: мы "возвращаем" результат нашего уравнения функции, которая "вызывает" нашу функцию
теперь, когда нужно добавить налог в другую функцию, можно написать что-то вроде:
vatAdded=addVAT(общая сумма)
таким образом мы вызываем функцию addVAT(value), подставляя на место value новое значение общая сумма
и функция "возвращает" нам результат с добавлением налога, для нового значения, которое мы назвали "общая сумма"
как правило, функции значительно сложнее, и данная техника при правильном использовании может сэкономить часы и даже дни работы. в начале процесса написания сценария (скрипта) нужно задать себе вопрос, можно ли какие-либо части выделить в отдельную функцию (рабочий блок).
- использование return для прекращения выполнения функции:
<script type="text/javascript">
<!--
function makeHidden(){
if (document.getElementById){
document.getElementById("layer1").style.visibility="hidden"
}
if(document.all){
document.all["layer1"].style.visibility="hidden"
}
if(document.layers){
document.layers["layer1"].visibility="hidden"
}
}
// -->
</script>
<!--
function makeHidden(){
if (document.getElementById){
document.getElementById("layer1").style.visibility="hidden"
}
if(document.all){
document.all["layer1"].style.visibility="hidden"
}
if(document.layers){
document.layers["layer1"].visibility="hidden"
}
}
// -->
</script>
в нем имеется проблема: первый и второй "if" . в некоторых ситуациях можно получить непредсказуемый результат.
проблема решается так:
<script type="text/javascript">
<!--
function makeHidden(){
if (document.getElementById){
document.getElementById("layer1").style.visibility="hidden"
return
}
if(document.all){
document.all["layer1"].style.visibility="hidden"
}
if(document.layers){
document.layers["layer1"].visibility="hidden"
}
}
// -->
</script>
в случае, если первый "if" сработает (окажется верным), return прекратит исполнение следующих пунктов сценария.
Подписаться на:
Сообщения (Atom)