Организация сайтостроительства Разработка стилей ActiveX Язык HTML Моделирование сайта Пакет Adobe GoLive WEB системы Протокол WAP 3D графика LightWave 8 3DS MAX 3D Studio MAX Мультимедийный сайт Анимация Графика Фото Кино Flash Видео на сайте Организация видео контента Premiere Pro Vstudio VirtualDub ВSonic Scenarist Видео на DVD Графика на сайте Изображения для сайта Photoshop Adobe After Effect Adobe Illustrator CorelDRAW CorelXARA Maya |
|
| Атрибут | Описание |
| applicationName | имя приложения, использующегося для идентификации при исполнении HTA-документа |
| border | вид обрамления окна; среди возможных значений - thin, dialog, none, thick |
| borderStyle | стиль обрамления окна; среди возможных значений - complex, normal, raised, static, sunken |
| caption | указывает, нужно ли показывать заголовок окна (yes/no) |
| icon | путь к пиктограмме, которая будет показана в заголовке; допустимые параметры пиктограммы - 32x32 пикселей, формат. ICO |
| maximizeButton | указывает, будет ли активизирована кнопка "восстановить" в заголовке документа (yes/no) |
| minimizeButton | указывает, будет ли активизирована кнопка "свернуть" в заголовке документа (yes/no) |
| showInTaskbar | указывает, будет ли показан документ в панели инструментов Windows (yes/no) |
| windowState | первоначальный размер окна; среди возможных значений - normal, minimize, и maximize |
| innerBorder | указывает, будет ли окно иметь внутреннюю границу (yes/no) |
| navigable | указывает, будут ли ссылки открываться в отдельных окнах или в одном (yes/no) |
| scroll | указывает, будет ли окно иметь полосу прокрутки (yes/no) |
| scrollFlat | указывает вид полосы прокрутки: 3D или нет (yes/no) |
| singleInstance | определяет, возможно ли одновременное открытие нескольких окон для HTA-документов (yes/no) |
| sysMenu | указывает, будут ли показаны составляющие заголовка окна (yes/no) |
| contextMenu | указывает на доступность контекстного меню, вызываемого правой кнопкой мыши (yes/no) |
| selection | указывает, можно ли выделять текст в HTA-окне (yes/no) |
| version | версия HTA |


![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
![]() | |
| Loading | |
![]() |
![]() |
![]() | |
![]() | |
| IT-консалтинг | Software Engineering | Программирование | СУБД | Безопасность | Internet | Сети | Операционные системы | Hardware |
| PR-акции, размещение рекламы — , тел. +7 495 6608306, ICQ 232284597 |
Пресс-релизы — |
![]() |


![]() |
![]() |
| Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. |


![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Loading |
![]() |
![]() |
![]() |
![]() |
| IT-консалтинг | Software Engineering | Программирование | СУБД | Безопасность | Internet | Сети | Операционные системы | Hardware |
| PR-акции, размещение рекламы — , тел. +7 495 6608306, ICQ 232284597 |
Пресс-релизы — |
![]() |


![]() |
![]() |
| Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. |
| ячейки таблицы, которая находится слева/справа/сверху/снизу наших ссылок (за исключением ячейки, где собственно находятся ссылки). В итоге, при наведении курсора на ячейку, в параметрах которой прописано onmouseover=P7_autoLayers(0), слой будет исчезать! Пропишем этот параметр в нужных местах нашей страницы: | Содержание страницы |
| podlink_4 |
| podlink_5 |
| link1 | link2 | link3 |
| Содержание страницы |
| podlink_1 |
| podlink_2 |
| podlink_3 |
).
Чтобы отобразить нужный нам слой, следует в ссылке прописать параметр ONMOUSEOVER=P7_autoLayers(0,'msa','Closer'), где 'msa' указывает на id отображаемого слоя.
"Привяжем" к ссылке link1 наш слой:
a','Closer')>link1
Теперь при наведении курсора мыши на link1 у нас будет появляться табличка!
, MostInfo.net
Одной из проблем как начинающих, так и уже довольно опытных веб-мастеров становится создание так называемого выпадающего меню. Еще проблемнее становится вопрос создания такого же меню, но работающего в различных браузерах. В данной статье я постараюсь раз и навсегда решить эту проблему!
,
В данной статье я расскажу вам об основных принципах создания "мультибраузерного" сайта. Под словом "мультибраузерный сайт" я подразумеваю сайт, определяющий браузер пользователя и, в зависимости от результата, использующий уникальные этому браузеру CSS стили. Также я расскажу о некоторых проблемах, которые могут возникнуть при работе с браузерами.
Значит так, что нам надо? А нам надо сделать так, чтобы сайт отображался в большинстве браузеров по возможности одинаково (к сожалению, абсолюта не добиться).
Перво-наперво необходимо определить, в каких браузерах наш сайт должен отлично выглядеть. В моем варианте это: IE, Opera, Netscape и Mozilla.
И сразу совет: старайтесь не использовать атрибуты , переложите эти обязанности на CSS... или на строковые элементы стиля aka style="*". Хотя даже "style" стоит использовать только при крайней необходимости.
Для решения этой интересной задачи я предлагаю следующее: использовать несколько стилей для разных браузеров. Однако, я вам не советую просто универсально писать, т.к. получится хуже, но геморроя меньше:)
Вот кодик, который я написал для своего сайта. Так мы определяем, с каким браузером мы имеем дело:
function browser_define($agent)
{
if(ereg('MSIE ([0-9].[0-9]{1,2})',$agent)&&!ereg('Opera ([0-9].[0-9]{1,2})',$agent)) $browser='ie';
elseif(ereg('Opera',$agent)) $browser='opera';
elseif(ereg('Netscape/',$agent)&&ereg('Gecko/',$agent)) $browser='netscape';
elseif(ereg('Gecko/',$agent)&&!ereg('Netscape/',$agent)) $browser='mozilla';
else $browser='ie';
return $browser;
}
Функция возвращает имя браузера. Используем ее так:
Т.е., если, например, к нам зашли через IE, то скармливаем CSS файл по имени ie.css. Можно сделать небольшую модернизацию и определять еще и версию браузера, но я в этом большого резона не увидел...
Теперь, после того, как мы научились определять браузер юзера и использовать специфичный ему CSS файл, поговорим о различиях между этими браузерами.
Вот наиболее важные нюансы, на которых стоит заострить внимание:
position: relative; top: 1px;
Это спасает. НО! В Opera я заметил такую фишку, что при наложении такого кода на любой другой элемент, например, на бордюр таблицы, границы просто становятся невидимыми:( Выйти из этого положения можно следующим способом: дописать "z-index". Т.е. у нас получается:
position: relative; top: 1px; z-index: 1;
scrollbar-face-color, scrollbar-shadow-color, scrollbar-highlight-color, scrollbar-3dlight-color, scrollbar-darkshadow-color, scrollbar-track-color, scrollbar-arrow-color
будет отображаться только в IE и производных от него. Поэтому не удивляйтесь, что, зайдя в Mozilla, вместо радостных тонов вы увидите серый скроллбар (в зависимости от темы оформления).
leftmargin, marginwidth, topmargin, marginheight
подобные скармливают нам различные визуальные редакторы. Точно знаю про Namo WebEditor(дааавно пользовался)
Используйте для отступов документа код:
BODY { padding: 0; margin: 0; }
Если же вы хотите сделать отступ в 1px сверху и снизу, то просто напишите:
BODY { padding: 1px 0 1px 0; margin: 0; }
Вы, наверное, спросите "А зачем margin: 0 нужен, ведь и без него все нормуль?" А я вам отвечу, что это просто необходимо для Mozilla. А то вы будете ломать голову, почему же у вас там появились лишние отступы:)
Вот в общем-то и все... Дерзайте, и у вас все получится.
P.S. Данная статья может содержать некоторые неточности, но суть, я думаю, вам понятна: ;-)
The A element brackets (or anchors) a piece of text (and/or image) which
is identified as a hypertext link.
The A element must have either an HREF attribute or a NAME attribute.
The HREF attribute identifies a destination ,
and the bracketed text is rendered as a hypertext link to the URL.
Browsers will display the contents of an A element with an HREF attribute
in a special manner to indicate that if the contents are selected,
the browser will execute that hypertext link.
The NAME attribute identifies a destination tag, and the bracketed text
is thereby identified as an available hypertext target
within this document.
Browsers do not display the contents of an A element with a NAME attribute
in any special way.
However, an A element with an HREF attribute can now be constructed
by using the document URL suffixed with #name.
This will load the document, but will position the display
starting at the location of this NAME tag.
An A element with an HREF attribute can also be constructed
to jump directly to this destination tag within the same document
by a URL consisting solely of #name
The presence of REL=relation
in document A with HREF to document/object B
identifies a relationship that B has to A that A recognizes/authorizes/verifies.
The presence of REV=relation
of the identical relation
in document B with HREF to document/object A
identifies a desired/expected/claimed relationship that B has to A,
but must be verified by checking with A.
Minimum Attributes
characters...
or
characters...
All Possible Attributes
NAME="..."
REL="..."
REV="..."
URN="..."
TITLE="..."
METHODS="..."
LANG="..."
DIR=ltr|rtl
CHARSET="..."
ID="..."
CLASS="..."
MD="..."
TARGET="..."
SHAPE="...">characters...
Elements Allowed Within...
members of groups
but not element
Allowed In Content Of...
Any element that permits members of group
Variations
The LANG, DIR and CHARSET attributes are introduced with the
internationalization proposal.
The CHARSET attribute is a hint as to the expected
character set used by the hyperlink.
Earlier proposals suggest changing the NAME attribute to ID,
declaring the NAME attribute as obsolete,
and adding an ID attribute for various elements
including the paragraph and heading elements.
With the ID, MD, and CLASS attributes as part of the style sheet
proposal, this is likely to change.
At present REV and REL are rarely used or supported,
and are Level 1 attributes,
but are of growing interest to automated document environments.
These relationships are more commonly identified in the
of the document using the element.
REL and REV can be either a comma-separated or white space separated
set of relationship(s) of the HREF link.
One proposal suggests that comma imply "or" and white
space imply "and" for a list of values.
These relationships and their semantics were originally proposed
to be registered with an HTML authority, which was described at
http://www.w3.org/hypertext/WWW/MarkUp/RegistrationAuthority.html,
but that link no longer responds. The entire topic of link relationships
is under active discussion and change.
Early examples of relationship names are
UseIndex, UseGlossary, Annotation, Reply, Embed,
Precedes, Subdocument, Present, Search, Supersedes, History, Made,
Owns, Approves, Supports, Refutes, Includes, Interested.
URN is for a Universal Resource Number, and is not currently
used or supported, and is a Level 1 attribute.
RFC 1866 describes it as a preferred, more persistent identifier
than the value of HREF.
TITLE is little used or supported, and is a Level 1 attribute,
but is expected to be the title of the HREF document.
RFC 1866 suggests TITLE can be displayed as a margin note
or on a small box while the mouse is over the anchor.
(ed. I am unaware of any browser that has implemented this
feature.)
METHODS is little used or supported, but is expected to be
a white-space-separated list of HTTP METHODS supported by the
object and accessible to the user.
RFC 1866 suggests that the content of the A element may be
rendered differently depending upon the HTTP method.
TARGET is a Netscape 2.0 extension to define a window name for use
by the retrieved hyperlink. If the named window is not already
open, Netscape 2.0 will open a new window and assign it that name.
See also the element for naming a window.
SHAPE is proposed to provide a mechanism to define
multiple A elements and corresponding "hotzones" within the
proposed element, to perform the equivalent function
of ISMAP without the need for writing a responding cgi-bin program.
For an alternate proposal, see the element.
A is a Level 0 element.
The ABBREV element
changes the character rendering of the
contents of the element to logically represent
abbreviations.
Minimum Attributes
All Possible Attributes
DIR=ltr|rtl
ID="..."
CLASS="...">characters...
Elements Allowed Within...
-In progress, to be determined-
Allowed In Content Of...
-In progress, to be determined-
Variations
The ABBREV element is a Version 3 proposed element.
All character definition elements are Level 2.
The ACRONYM element
changes the character rendering of the
contents of the element to logically represent
acronyms.
Minimum Attributes
characters...
All Possible Attributes
LANG="..."
DIR=ltr|rtl
ID="..."
CLASS="...">characters...
Elements Allowed Within...
-In progress, to be determined-
Allowed In Content Of...
-In progress, to be determined-
Variations
The ACRONYM element is a Version 3 proposed element.
All character definition elements are Level 2.
The ADDRESS element defines a separated multi-line set of text
to be rendered for address information.
Minimum Attributes
members of group
or element
Allowed In Content Of...
Any element that permits members of group
Variations
ADDRESS text is typically rendered in italics, and may be indented.
The LANG and DIR attributes are introduced with the
internationalization proposal.
The internationalization proposal also includes
ALIGN=center|left|right|justify
The CLEAR and NOWRAP attributes are proposed in Version 3.
ADDRESS is a Level 0 element.
Sandia Requirements
An ADDRESS element is required to identify a "point-of-contact".
For details, see the .
The APPLET element replaced the APP element as the mechanism
to identify and invoke a JAVA(tm) application. A browser that
understands this element will ignore everything in the content
of the APPLET element except the PARAM elements. Browsers that
do not understand this element should ignore it and the PARAM
elements and instead process the content of the element.
Thus the content is the alternate HTML if the application is
not invoked. CODE is the name of the file that contains the
compiled Applet subclass. This name is relative to the base
URL of the applet and cannot be an absolute URL. WIDTH and HEIGHT
give the initial width and height (in pixels) of the applet
display area. CODEBASE specifies the base URL of the applet.
ALT specifies parsed character data to be displayed if the brower understands
the APPLET tag but can't/won't run them. NAME specifies a name
for the applet instance, which allows applets on the same page
to commuicate with each other. ALIGN specifies the display
alignment. VSPACE and HSPACE specify the reserved space around the
applet (in pixels).
Minimum Attributes
All Possible Attributes
Elements Allowed Within...
and any other elements which would have been allowed at this
point in the document.
Allowed In Content Of...
-In progress, to be determined-
Variations
The APPLET element is a proposed extension for JAVA(tm) applications,
and is a Netscape 2.0 extension.
The AREA element
specifies a single area of an image which, if selected, will
link to the hyperlink identified by HREF.
If multiple AREA elements in the
same MAP define overlapping areas, the first encountered takes precedence.
Minimum Attributes
All Possible Attributes
SHAPE=rect|circle|polygon
HREF="..."
NOHREF
ALT="...">
Elements Allowed Within...
AREA has no end tag and therefore has no content.
Allowed In Content Of...
Variations
The AREA element is part of a proposed enhancement to
provide client-side image maps.
COORDS describes the position of
an area (in pixels) of the image in comma-separated x,y coordinates
where the upper-left corner is "0,0".
For SHAPE=rect (the default), it is "left,top,right,bottom".
For SHAPE=circle, it is "center_x,center_y,radius".
For SHAPE=polygon, it is successive x,y vertices of the polygon.
If the first and last coordinates are not the same, then a segment
is inferred to close the polygon. The NOHREF indicates that this
region should generate no links.
The ALT attribute specifies optional parsed character data to describe the area which
could be displayed by a text-only browser as a substitute for the image.
AREA is an extension in Netscape 2.0,
but the only SHAPE recognized is "rect", and ALT is not defined.
The AU element
changes the character rendering of the
contents of the element to logically represent
the name of an author.
Minimum Attributes
All Possible Attributes
DIR=ltr|rtl
ID="..."
CLASS="...">characters...
Elements Allowed Within...
-In progress, to be determined-
Allowed In Content Of...
-In progress, to be determined-
Variations
The AU element is a Version 3 proposed element.
All character definition elements are Level 2.
The B element changes the physical rendering of the
contents of the element to a bold font.
Minimum Attributes
characters...
All Possible Attributes
LANG="..."
DIR=ltr|rtl
ID="..."
CLASS="...">characters...
Elements Allowed Within...
members of group
Allowed In Content Of...
Any element that permits members of group
Variations
Browsers who do not have bold may render in some other manner.
RFC 1866 states that content must be rendered as distinct
from content.
The LANG and DIR attributes are introduced with the
internationalization proposal.
All character definition elements are Level 2.
BANNER
Description
The BANNER element is proposed for corporate logos, navigation aids,
disclaimers and other information which shouldn't be scrolled
with the rest of the document.
Minimum Attributes
All Possible Attributes
DIR=ltr|rtl
ID="..."
CLASS="...">characters...
Elements Allowed Within...
-In progress, to be determined-
Allowed In Content Of...
Variations
This is a proposed Version 3 element.
BASE
Description
The BASE element provides the absolute
base to be used for any relative URL links in this document.
It must be a complete file name,
and is usually the original URL of this document.
If this file is moved, having the BASE set to the original URL
eliminates the need to also move all the documents which are
identified by relative URL links in this document.
Minimum Attributes
All Possible Attributes
Elements Allowed Within...
Allowed In Content Of...
Variations
This is a Level 0 element.
Netscape 2.0 defines the TARGET attribute to define a default
named target window for every link in a document that does not
have an explicit TARGET attribute.
BASEFONT
Description
Change the document base font size to one of the seven defined sizes.
The default is 3.
Minimum Attributes
All Possible Attributes
Elements Allowed Within...
-In progress, to be determined-
Allowed In Content Of...
-In progress, to be determined-
Variations
The BASEFONT element is a Netscape extension.
BDO
Description
The BDO element is a directional override feature needed to deal
with unusual pieces of text in which directionality cannot be
resolved from context in an unambiguous fashion.
It requires the DIR attribute.
The meaning of DIR is different on BDO than on inline text markup elements.
For BDO the DIR attribute
is a bidi override, forcing the directionnality of even those
characters that have strong directionnality. On inline elements,
DIR indicates a new directional embedding level, affecting mostly the
neutrals and the overall layout.
Minimum Attributes
characters...
All Possible Attributes
DIR=ltr|rtl LANG="...">characters...
Elements Allowed Within...
members of group
Allowed In Content Of...
Any element that permits members of group
Variations
The BDO element is a proposed element as part of the enhancement
to deal with internationalization of HTML.
BGSOUND
Description
The BGSOUND element will cause an audio file to be presented
as background to the document.
Minimum Attributes
All Possible Attributes
LOOP="...">
Elements Allowed Within...
The BGSOUND element is defined as having no content.
Allowed In Content Of...
-In progress, to be determined-
Variations
The BGSOUND element is a MS Internet Explorer 2.0 enhancement.
SRC specifies the URL of the audio
file to be played. LOOP specifies how many times the sound will
be displayed while the HTML document is displayed, and can either
be a number or the string "infinite". The default for LOOP is one.
Considerable opposition to the use of this element has been expressed
on the Web, especially the use of LOOP=infinite, since users currently
have no way to disable the audio.
BIG
Description
The BIG element changes the physical rendering of the
contents of the element to a bigger font than normal text, if practical.
Minimum Attributes
characters...
All Possible Attributes
LANG="..."
DIR=ltr|rtl
ID="..."
CLASS="...">characters...
Elements Allowed Within...
-In progress, to be determined-
Allowed In Content Of...
-In progress, to be determined-
Variations
The BIG element is proposed in Version 3, and is implemented as
a Netscape 2.0 enhancement.
All character definition elements are Level 2.
BLINK
Description
The BLINK element changes the physical rendering of the
contents of the element to a blinking font.
Minimum Attributes
All Possible Attributes
Elements Allowed Within...
-In progress, to be determined-
Allowed In Content Of...
-In progress, to be determined-
Variations
This element is a Netscape 1.1 enhancement
and many browsers ignore this element.
Many users find the use of this element annoying.
It should be restricted to short term use for new information.
Netscape 1.1N permits users to disable the rendering of this element.
BLOCKQUOTE
Description
The BLOCKQUOTE element defines a separated multi-line set of text
to be rendered as quoted text.
Minimum Attributes
All Possible Attributes
LANG="..."
DIR=ltr|rtl
ALIGN=center|left|right|justify>
Elements Allowed Within...
members of group
Allowed In Content Of...
Any element that permits members of group
Variations
RFC 1866 states the contents of the BLOCKQUOTE element is typically
rendered slightly indented both left and right, and/or italic font.
It also states that a single-font browser rendering may
display the contents with a vertical line
of ">" characters down the left margin
to indicate quotation in the Internet mail style.
The LANG and DIR attributes are introduced with the
internationalization proposal.
The internationalization proposal also includes
ALIGN=center|left|right|justify
Version 3 proposes replacing the BLOCKQUOTE element with the
element.
BLOCKQUOTE is a Level 0 element.
BODY
Description
The BODY element contains all the content of the document,
as opposed to the
, which contains information about
the document. All displayable elements should be within the content
of the BODY.
Minimum Attributes
All Possible Attributes
DIR=ltr|rtl
ID="..."
CLASS="..."
BACKGROUND="..."
BGCOLOR="..."
BGPROPERTIES=fixed
TEXT="#rrggbb"
LINK="#rrggbb"
VLINK="#rrggbb"
ALINK="#rrggbb">
Elements Allowed Within...
members of group
Allowed In Content Of...
Variations
The HTML, HEAD, and BODY elements were introduced with
RFC 1866, and are currently optional, but are considered
Level 0 elements.
The LANG and DIR attributes are introduced with the
internationalization proposal.
Version 3 proposes the attribute BACKGROUND.
Netscape 1.1 and MS Internet Explorer 2.0
include the BACKGROUND attribute, which is a URL to point
to an image to be reproduced to fill the background of the document.
Netscape 1.1 and MS Internet Explorer 2.0 both document the BGCOLOR extension.
Netscape requires an "#rrggbb" number, while
Internet Explorer also accepts the following color names:
Black, Maroon, Green, Olive, Navy, Purple, Teal, Gray, Silver, Red, Lime,
Yellow, Blue, Fuchsia, Aqua, White.
The TEXT, LINK, VLINK, and ALINK attributes are Netscape 1.1 extensions,
and also appear to work with MS Internet Explorer 2.0.
BGPROPERTIES is an MS Internet Explorer 2.0 extension and currently
only accepts the value of "fixed" which provides a watermark
(non-scrolling) background image.
Sandia Requirements
The HTML, HEAD and BODY elements are required.
BQ
Description
The BQ element defines a multi-line set of text
to be rendered as quoted text.
The content of the BQ element may optionally contain the
element.
Minimum Attributes
All Possible Attributes
DIR=ltr|rtl
ID="..."
CLASS="..."
CLEAR=left|right|all|"..."
NOWRAP>
Elements Allowed Within...
-others to be determined-
Allowed In Content Of...
-others to be determined-
Variations
The BQ element is proposed in Version 3 as a replacement
for the BLOCKQUOTE element.
Version 3 does not indicate the typical rendering of the contents
of the BQ element, but does indicate that it may not imply
text separation.
BR
Description
The BR element breaks for a new line, but does not produce
separation of text.
Minimum Attributes
All Possible Attributes
CLEAR=left|right|all|"..."
ID="..."
CLASS="...">
Elements Allowed Within...
The BR element is defined as having no content.
Allowed In Content Of...
Any element that permits members of group
Variations
The CLEAR attribute is a Netscape 1.1 extension and was added
to force the line break to clear possible floating graphic images.
The standard tables proposal expects the presence of this attribute
since it expects text to flow around a table, if possible,
but does not standardize the attribute's existence as part of the proposal.
Version 3 includes CLEAR, and proposes the remaining attributes.
The BR element is Level 0.
CAPTION
Description
The CAPTION element is used to label a table or figure.
The ALIGN attribute specifies on which outside edge to place the caption.
Minimum Attributes
All Possible Attributes
LANG="..."
DIR=ltr|rtl
ID="..."
CLASS="...">characters...
Elements Allowed Within...
-In progress, to be determined-
Allowed In Content Of...
Variations
The CAPTION element was originally proposed in Version 3
and is part of the current table proposal.
This element is an extension in Netscape 1.1.
CENTER
Description
All contents within the CENTER element is to be
centered between the current left and right margin.
Minimum Attributes
All Possible Attributes
Elements Allowed Within...
-In progress, to be determined-
Allowed In Content Of...
-In progress, to be determined-
Variations
The CENTER element is a Netscape 1.1 extension.
It was provided as an alternative to the HTML+ and Version 3
ALIGN="center" proposed new attribute for all the
text block elements such as the
paragraph and
Both RFC 1866 and the current Version 3 specification
only include the ALIGN attribute, not the CENTER element,
and Netscape 2.0 has added the ALIGN="center" attribute.
Что можно делать с помощью cookie?
Сами по себе cookies не могут делать ничего, это только лишь некоторая
информация. Однако, сервер может на содержащуюся в cookies информацию.
Например, в случае авторизованного доступа к чему либо через WWW,
в cookies сохраняется login и password в течение сессии, что позволяет
не вводить их при запросе каждого запаролированного документа.
Другой пример: cookies могут использоваться для построения персонализированных
страниц. Чаще всего встречается такое - на некотором сервере Вас
просят ввести свое имя, и каждый раз, когда Вы заходите на первую
страницу этого сервера, Вам пишут что-то типа "Hello, your_name!".
На использовании cookies также часто строят функцию оформления
заказа в онлайновых магазинах, в частности, в Амазоне, такая своеобразная
виртуальная корзина покупателя, как в обычном реальном супермаркете.
Что такое cookie?
Cookie является решением одной из наследственных проблем HTTP
спецификации. Эта проблема заключается в непостоянстве соединения
между клиентом и сервером, как при FTP или Telnet сессии, т.е.
для каждого документа (или файла) при передаче по HTTP протоколу
посылается отдельный запрос. Включение cookie в HTTP протокол
дало частичное решение этой проблемы.
Cookie это небольшая порция информации, которую сервер передает
клиенту. Клиент (броузер) будет хранить эту информацию и передавать
ее серверу с каждым запросом как часть HTTP заголовка. Некоторые
cookie хранятся только в течение одной сессии, они удаляются после
закрытия броузера. Другие, установленные на некоторый период времени,
записываются в файл. Обычно этот файл называется 'cookie.txt'.
Что такое cookies и как с ними работать
Откуда возник термин "cookie" никто достоверно не знает, хотя считается, что во времена зарождения где-то использовалось словосочетание Magic Cookies. Имелись в виду "квитанции" (token, ticket), которыми обменивались программы.
Cookie является решением одной из наследственных проблем (HyperText Transfer Protocol). Эта проблема заключается в непостоянстве соединения между клиентом и сервером, как при или Telnet сессии, т.е. для каждого документа (или файла) при передаче по HTTP протоколу посылается отдельный запрос. Включение cookie в HTTP протокол дало частичное решение этой проблемы. Иначе говоря, транзакция завершается после того, как браузер сделал запрос, а сервер выдал соответствующий ответ. Сразу после этого сервер "забывает" о пользователе и каждый следующий запрос того же пользователя считает новым пользователем.
Используя cookie, можно эмулировать сессию по HTTP протоколу. Коротко принцип эмуляции сессии таков: на первом запросе выдается соотвествующее значение cookie, а при каждом последующем запросе это значение читается из переменной окружения HTTP_COOKIE и соответствующим образом обрабатывается.
Простой пример: есть форма, где пользователю предлагается указать свое имя, из нее вызывается скрипт, прописывающий значение cookie в браузер пользователя. При каждом последующем заходе на основе анализа значения cookie из браузера пользователя на странице появляется либо именное приветствие (если есть установленное значение cookie), либо первоначальная форма с запросом имени пользователя (если значение cookie не установлено).
Cookie - это небольшая порция текстовой информации, которую сервер передает браузеру. Браузер будет хранить эту информацию и передавать ее серверу с каждым запросом как часть HTTP заголовка. Одни значения cookie могут храниться только в течение одной сессии, они удаляются после закрытия броузера. Другие, установленные на некоторый период времени, записываются в файл. Обычно этот файл называется 'cookies.txt' и лежит в рабочей директории установленного на компьютер браузера. У меня, к примеру, в этом файле содержится следующее:
# Netscape HTTP Cookie File # http://www.netscape.com/newsref/std/cookie_spec.html # This is a generated file! Do not edit. www.webclub.ru FALSE /ourweb FALSE 946683907 1 1 .bizlink.ru TRUE / FALSE 915148488 u_irads_watch 627633 .doubleclick.net TRUE / FALSE 1920499140 id 332666ae .yahoo.com TRUE / FALSE 915144943 Y v=1&n=6jm0u5lgubh1k&l=0b8a0d3h/o&p=m29vvru7130a .yahoo.com TRUE / FALSE 915144943 T z=3587c277 mail.yahoo.com TRUE / FALSE 943919791 YM.Login id%3d%241%24rm%24L6MDTCsrCNnk3syLZl2zo.%26sid%3dszxPh4SazGg/%250a%26ts%3dX%2588%25c3%2506%25d3%25e5I-%255d%253f%2597%25ddu .preferences.com TRUE / FALSE 1182140165 PreferencesID 3AGN9WD1D80gQfjvjAxRuq .geocities.com TRUE / FALSE 900743217 iTag gY6bZzWItDQAAWll3T8ASk1vbiwgMTMg search.netscape.com FALSE / FALSE 942189477 NGUserID cfc84d2a-522-898178454-1 www.webclub.ru FALSE FALSE 913543999 visited yes
Как видно, у меня оставили cookie , поисковая система , бесплатный почтовый сервер , рекламные сети и отечественная . В настоящее время большинство браузеров поддерживает механизм cookies. Я точно знаю, что cookie можно использовать во всех версиях Netscape Navigator, Microsoft Internet Explorer и NCSA Mosaic.
Что можно делать с помощью cookie?
Сами по себе cookies не могут делать ничего, это только лишь некоторая текстовая информация. Однако сервер может считывать содержащуюся в cookies информацию и на основании ее анализа совершать те или иные действия. Например, в случае авторизованного доступа к чему либо через WWW в cookies сохраняется login и password в течение сессии, что позволяет пользователю не вводить их снова при запросах каждого документа, защищенного паролем.
На использовании cookies также часто строят функции оформления заказов в онлайновых магазинах, в частности, в самом крупном виртуальном книжном магазине реализована своеобразная виртуальная корзина покупателя, как в обычном реальном супермаркете, в которую сервер записывает информацию обо всех заказанных книгах. Пользователь просто помечает интересующие его книги, а затем оформляет покупку сразу всех отмеченных книг.
Еще одна распространенная область использования cookies - при настройке индивидуального профиля каждого зарегистрированного пользователя.
И, наконец, самая последняя область - использование механизма cookie в рекламном бизнесе на Интернет. Еще год назад реклама в Интернет за деньги была довольно экзотической услугой, а сейчас этот бизнес уже устоялся и стремительно развивается. Однако рекламодатели начинают предъявлять более жесткие условия к оценке эффективности своих расходов. Cookie используются для таргетинга рекламы (определения целевой аудитории, например, по географическому положению пользователей), отслеживания интересов пользователей, учета количества показов и проходов сквозь баннеры.
Работа с cookie
Теперь, когда с принципами действия и областями применения cookie все более или менее понятно, можно приступить к изучению формата и синтаксиса, а также способов задания значений cookie.
Формат и синтаксис cookie
Предлагаемое мной в этой статье описание формата и синтаксиса cookie является вольным пересказом изначальной спецификации Netscape Communications "". В настоящий момент идет разработка более строгой спецификации для cookie. Итак, cookie является частью HTTP заголовка. Полное описание поля Set-Cookie HTTP заголовка:
Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure
Минимальное описание поля Set-Cookie HTTP заголовка:
Set-Cookie: NAME=VALUE;
NAME=VALUE - строка символов, исключая перевод строки, запятые и пробелы. NAME-имя cookie, VALUE - значение. Не допускается использование двоеточия, запятой и пробела.
expires=DATE - время хранения cookie, т.е. вместо DATE должна стоять дата в формате "expires=Monday, DD-Mon-YYYY HH:MM:SS GMT", после которой истекает время хранения cookie. Если этот атрибут не указан, то cookie хранится в течение одного сеанса, до закрытия броузера.
domain=DOMAIN_NAME - домен, для которого значение cookie действительно. Например, "domain=cit-forum.com". В этом случае значение cookie будет действительно и для домена cit-forum.com, и для www.cit-forum.com. Но не радуйтесь, указания двух последних периодов доменных имен хватает только для "COM", "EDU", "NET", "ORG", "GOV", "MIL" и "INT". Для обсуждаемых сейчас новых семи доменов первого уровня ("FIRM", "SHOP", "WEB", "ARTS", "REC", "INFO", "NOM"), вероятно, это условие сохранится. Для доменов иерархии "RU", например, придется указывать три периода.
Если этот атрибут опущен, то по умолчанию используется доменное имя сервера, на котором было задано значение cookie.
path=PATH - этот атрибут устанавливает подмножество документов, для которых действительно значение cookie. Например, указание "path=/win" приведет к тому, что значение cookie будет действительно для множества документов в директории /win/, в директории /wings/ и файлов в текущей директории с именами типа wind.html и windows.shtml. Для того, чтобы cookie отсылались при каждом запросе к серверу, необходимо указать корневой каталог сервера, например, "path=/".
Если этот атрибут не указан, то значение cookie распространяется только на документы в той же директории, что и документ, в котором было установлено значение cookie.
secure - если стоит этот маркер, то информация cookie пересылается только через HTTPS (HTTP с использованием SSL - Secure Socket Level), в защищенном режиме. Если этот маркер не указан, то информация пересылается обычным способом.
Синтаксис HTTP заголовка для поля Cookie
Когда запрашивается документ с HTTP сервера, браузер проверяет свои cookie на предмет соответствия домену сервера и прочей информации. В случае, если найдены удовлетворяющие всем условиям значения cookie, броузер посылает их в серверу в виде пары имя/значение:
Cookie: NAME1=OPAQUE_STRING1; NAME2=OPAQUE_STRING2 ...
Дополнительные сведения
Одновременно можно задавать несколько значений cookie.
В случае, если cookie принимает новое значение при имеющемся уже в браузере cookie с совпадающими параметрами NAME, domain и path, то старое значение заменяется новым. В остальных случаях новые значения cookie добавляются к старым.
Использование expires не гарантирует сохранность cookie в течение заданного периода времени, поскольку клиент (браузер) может удалить запись из-за нехватки выделенного места или каких-либо других причин.
Клиент (браузер) имеет следующие ограничения для cookies:
Если ограничение 300 или 20 превышается, то удаляется первая по времени запись. При превышении лимита объема в 4Кбайт корректность значения cookie страдает - отрезается кусок записи (с начала этой записи) равный превышению объема.
В случае кэширования документов, например, proxy-сервером, поле Set-cookie HTTP заголовка никогда не кэшируется.
Если proxy-сервер принимает ответ, содержащий поле Set-cookie в заголовке, предполагается, что поле доходит до клиента вне зависимости от кода возврата 304 (Not Modified) или 200 (OK). Соответственно, если клиентский запрос содержит в заголовке Cookie, то он должен дойти до сервера, даже если жестко установлен параметр If-modified-since.
Ниже приведено несколько примеров, иллюстрирующих использование cookies
Пример 1. Управление подмножеством документов, для которых действительны значения cookie, и их сроком годности
Браузер запрашивает документ и принимает от сервера в ответ:
Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT
Когда браузер запрашивает URL с путем "/" на этом сервере, он посылает серверу:
Cookie: CUSTOMER=WILE_E_COYOTE
Браузер запрашивает документ и принимает от сервера в ответ:
Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/
Когда браузер запрашивает URL с путем "/" на этом сервере, он посылает серверу уже два значения cookie:
Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001
Сервер установил еще одно значение cookie, на этот раз с другой областью действия:
Set-Cookie: SHIPPING=FEDEX; path=/foo
Теперь браузер, запрашивая URL с путем "/" на этом сервере, посылает лишь два значения cookie:
Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001
и лишь при запросе браузером документов с путем "/foo" на этом сервере посылаются все три значения cookie:
Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001; SHIPPING=FEDEX
Комментарий: после закрытия браузера в файле 'cookies.txt' останется только одно значение cookie:
CUSTOMER=WILE_E_COYOTE
поскольку только для него установлен срок годности - 9 ноября 1999 года. Все остальные значения не будут сохранены.
Пример 2. Значения cookie с одинаковыми именами, но разными параметрами
Браузер запрашивает документ и принимает ответ от сервера:
Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/
Когда браузер запрашивает URL с путем "/" на этом сервере, он посылает значение:
Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001
Во второй раз, запрашивая документ, браузер принимает от сервера значение cookie с другой областью действия:
Set-Cookie: PART_NUMBER=RIDING_ROCKET_0023; path=/ammo
Когда браузер запрашивает URL с путем "/ammo" на этом сервере, он посылает значение:
Cookie: PART_NUMBER=RIDING_ROCKET_0023; PART_NUMBER=ROCKET_LAUNCHER_0001
Комментарий: здесь мы имеем две пары имя/значение с одинаковым именем "PART_NUMBER". При закрытии браузера ни одно из этих значений не сохранится, поскольку не задан параметр expires.
Способы задания значений cookie
Способ задания значений cookie зависит того, как эти значения будут использоваться и какие имеются серверные ресурсы. Можно манипулировать временем жизни выставленных cookie и устанавливать подмножества URL (Universal Resource Locator), в которых заданные значения действительны. Есть несколько способов задания, наиболее часто используются три - через META-таги языка HTML, JavaScript и CGI-скрипты. Любым способом можно задавать как одно, так и несколько значений сразу. Сразу хочу предупредить - не забывайте об ограничениях по объему и количеству значений cookie, а также параметре domain, так как помимо основного доменного имени узла часто бывает несколько алиасов (alias).
1. Задание cookie с помощью META-тагов
Простейший способ выставить cookie - использовать соответствующий META-таг в контейнере
... любого статического HTML документа. В общем случае это выглядит следующим образом:
Такой способ задания cookie, на мой взгляд, наиболее интересен для создателей маленьких домашних страничек, когда нет возможности писать свои собственные . А если есть поддержка (Server Side Include) или , то можно делать интерактивные страницы вообще без использования внешних CGI-скриптов. При наличии SSI на узле создание интерактивности с использованием механизма cookie становится просто удовольствием.
С помощью cookie задается на любой статичной странице, директивой (none) можно потом считать любые переменные окружения, в том числе и ранее заданные значения cookie (переменная HTTP_COOKIE), а с помощью конструкций ,