Ссылки оболочки
Ссылка на оболочку — это объект данных, содержащий сведения, используемые для доступа к другому объекту в пространстве имен оболочки, т. е. любому объекту, видимому через Windows Обозреватель. К типам объектов, доступ к которым можно получить через ссылки оболочки, относятся файлы, папки, диски и принтеры. Ссылка на оболочку позволяет пользователю или приложению получить доступ к объекту из любой точки пространства имен. Пользователю или приложению не нужно знать текущее имя и расположение объекта.
- Сведения о ссылках на оболочку
- Разрешение ссылок
- Связывание файлов
- Идентификаторы элементов и списки идентификаторов
- Создание ярлыка и ярлыка папки для файла
- Разрешение ярлыка
- Создание ярлыка для нефайлового объекта
Сведения о ссылках на оболочку
Пользователь создает ссылку на оболочку, выбрав команду Создать ярлык в контекстном меню объекта. Система автоматически создает значок для ссылки оболочки, объединяя значок объекта с небольшой стрелкой (известной как системный значок наложения ссылки), которая отображается в левом нижнем углу значка. Ссылка на оболочку со значком называется ярлыком; однако термины ссылка на оболочку и ярлык часто используются взаимозаменяемо. Как правило, пользователь создает ярлыки для быстрого доступа к объектам, хранящимся во вложенных папках или общих папках на других компьютерах. Например, пользователь может создать ярлык для документа Microsoft Word, который находится во вложенной папке, и разместить значок ярлыка на рабочем столе. Затем пользователь может открыть документ, дважды щелкнув значок ярлыка. Если документ перемещен или переименован после создания ярлыка, система попытается обновить ярлык при следующем его выборе пользователем.
Приложения также могут создавать и использовать ссылки и ярлыки оболочки. Например, текстовое приложение может создать ссылку на оболочку для реализации списка последних использованных документов. Приложение создает ссылку оболочки с помощью интерфейса IShellLink для создания объекта ссылки оболочки. Приложение использует интерфейс IPersistFile или IPersistStream для хранения объекта в файле или потоке.
IShellLink нельзя использовать для создания ссылки на URL-адрес.
В этом обзоре описан интерфейс IShellLink и объясняется, как использовать его для создания и разрешения ссылок оболочки в приложении на основе Microsoft Win32. Так как структуры ссылок оболочки основаны на МОДЕЛИ ОБЪЕКТОВ КОМПОНЕНТОВ OLE (COM), вы должны ознакомиться с основными понятиями программирования COM и OLE, прежде чем читать этот обзор.
Разрешение ссылок
Если пользователь создает ярлык для объекта, а имя или расположение объекта позже изменяется, система автоматически выполняет действия по обновлению или разрешению ярлыка при следующем его выборе. Однако если приложение создает ссылку оболочки и сохраняет ее в потоке, система не пытается автоматически разрешить эту ссылку. Приложение должно разрешить ссылку, вызвав метод IShellLink::Resolve .
При создании ссылки оболочки система сохраняет сведения о ней. При разрешении ссылки (автоматически или с помощью вызова IShellLink::Resolve ) система сначала получает путь, связанный со ссылкой оболочки, с помощью указателя на список идентификаторов ссылки оболочки. Дополнительные сведения о списке идентификаторов см. в разделах Идентификаторы элементов и Списки идентификаторов. Система выполняет поиск связанного объекта в этом пути и, если находит объект, разрешает ссылку. Если системе не удается найти объект, она вызывает службу отслеживания распределенных ссылок и идентификаторов объектов (DLT), если она доступна, чтобы найти объект. Если служба DLT недоступна или не может найти объект, система ищет объект в том же каталоге с тем же временем создания файла и атрибутами, но с другим именем. Этот тип поиска разрешает ссылку на объект, который был переименован.
Если системе по-прежнему не удается найти объект, она выполняет поиск по каталогам, рабочему столу и локальным томам, рекурсивно просматривая в дереве каталогов объект с тем же именем или временем создания. Если система по-прежнему не находит совпадение, отображается диалоговое окно с запросом у пользователя ввести расположение. Приложение может подавить диалоговое окно, указав значение SLR_NO_UI в вызове IShellLink::Resolve.
Инициализация библиотеки объектов компонентов
Прежде чем приложение сможет создавать и разрешать ярлыки, оно должно инициализировать библиотеку объектов компонентов, вызвав функцию CoInitialize . Для каждого вызова CoInitialize требуется соответствующий вызов функции CoUninitialize , которую приложение должно вызывать при завершении работы. Вызов CoUninitialize гарантирует, что приложение не завершит работу, пока не получит все ожидающие сообщения.
Имена Location-Independent
Система предоставляет независимые от расположения имена для ссылок оболочки на объекты, хранящиеся в общих папках. Если объект хранится локально, система предоставляет локальный путь и имя файла для объекта. Если объект хранится удаленно, система предоставляет имя сетевого ресурса универсального соглашения об именовании (UNC) для объекта. Так как система предоставляет имена, независимые от расположения, ссылка на оболочку может служить универсальным именем для файла, который можно передать на другие компьютеры.
Связывание файлов
Когда пользователь создает ярлык для объекта, выбрав команду Создать ярлык в контекстном меню объекта, Windows сохраняет сведения, необходимые для доступа к объекту, в файле ссылки — двоичном файле с расширением LNK. Файл ссылки содержит следующие сведения:
- Расположение (путь) объекта, на который ссылается ярлык (называемый соответствующим объектом).
- Рабочий каталог соответствующего объекта.
- Список аргументов, которые система передает соответствующему объекту при активации метода IContextMenu::InvokeCommand для ярлыка.
- Команда show, используемая для задания начального состояния отображения соответствующего объекта. Это одно из SW_ значений, описанных в разделе ShowWindow.
- Расположение (путь и индекс) значка ярлыка.
- Строка описания ярлыка.
- Сочетание клавиш для сочетания клавиш.
При удалении файла ссылки соответствующий объект не затрагивается.
Если вы создаете ярлык для другого ярлыка, система просто копирует файл ссылки, а не создает новый файл ссылки. В этом случае сочетания клавиш не будут независимы друг от друга.
Приложение может зарегистрировать расширение имени файла в качестве ярлыка типа файла. Если файл имеет расширение имени файла, которое было зарегистрировано как тип файла ярлыка, система автоматически добавляет в значок файла определенный системой значок наложения ссылок (небольшая стрелка). Чтобы зарегистрировать расширение имени файла в качестве ярлыка типа файла, необходимо добавить значение IsShortcut в описание реестра расширения имени файла, как показано в примере ниже. Обратите внимание, что для того, чтобы значок наложения вступил в силу, необходимо перезапустить оболочку. IsShortcut не имеет значения данных.
HKEY_CLASSES_ROOT .xyz (Default) = XYZApp XYZApp IsShortcutИмена сочетаний клавиш
Имя ярлыка, которое представляет собой строку, которая отображается под значком ссылки оболочки, на самом деле является именем файла самого ярлыка. Пользователь может изменить строку описания, выбрав ее и введя новую строку.
Расположение ярлыков в пространстве имен
Ярлык может существовать на рабочем столе или в любом месте пространства имен оболочки. Аналогичным образом, объект, связанный с ярлыком, также может существовать в любом месте пространства имен оболочки. Приложение может использовать метод IShellLink::SetPath , чтобы задать путь и имя файла для связанного объекта, а метод IShellLink::GetPath — для получения текущего пути и имени файла для объекта.
Ярлык рабочего каталога
Рабочий каталог — это каталог, в котором соответствующий объект ярлыка загружает или хранит файлы, если пользователь не идентифицирует определенный каталог. Файл ссылки содержит имя рабочего каталога для соответствующего объекта. Приложение может задать имя рабочего каталога для соответствующего объекта с помощью метода IShellLink::SetWorkingDirectory и получить имя текущего рабочего каталога для соответствующего объекта с помощью метода IShellLink::GetWorkingDirectory .
Сочетания аргументов командной строки
Файл ссылки содержит аргументы командной строки, которые оболочка передает соответствующему объекту, когда пользователь выбирает ссылку. Приложение может задать аргументы командной строки для ярлыка с помощью метода IShellLink::SetArguments . Полезно задать аргументы командной строки, когда соответствующее приложение, например компоновщик или компилятор, принимает специальные флаги в качестве аргументов. Приложение может получить аргументы командной строки из ярлыка с помощью метода IShellLink::GetArguments .
Команды отображения ярлыков
Когда пользователь дважды щелкает ярлык, система запускает приложение, связанное с соответствующим объектом, и задает начальное состояние отображения приложения на основе команды show, указанной ярлыком. Команда show может быть любым из SW_ значений, включенных в описание функции ShowWindow . Приложение может задать команду show для ярлыка с помощью метода IShellLink::SetShowCmd и получить текущую команду show с помощью метода IShellLink::GetShowCmd .
Ярлыки
Как и другие объекты оболочки, ярлык имеет значок. Пользователь обращается к объекту, связанному с ярлыком, дважды щелкнув значок ярлыка. Когда система создает значок для ярлыка, она использует растровое изображение соответствующего объекта и добавляет системный значок наложения ссылки (небольшая стрелка) в левый нижний угол. Приложение может задать расположение (путь и индекс) значка ярлыка с помощью метода IShellLink::SetIconLocation . Приложение может получить это расположение с помощью метода IShellLink::GetIconLocation .
Описания сочетаний клавиш
Ярлыки имеют описания, но пользователь никогда не видит их. Приложение может использовать описание для хранения любой текстовой информации. Описания задаются с помощью метода IShellLink::SetDescription и извлекаются с помощью метода IShellLink::GetDescription .
Сочетания клавиш
С объектом сочетания клавиш может быть связано сочетание клавиш. Сочетания клавиш позволяют пользователю нажимать сочетание клавиш для активации сочетания клавиш. Приложение может задать сочетание клавиш для сочетания клавиш с помощью метода IShellLink::SetHotkey и получить текущее сочетание клавиш с помощью метода IShellLink::GetHotkey .
Идентификаторы элементов и списки идентификаторов
Оболочка использует идентификаторы объектов в пространстве имен оболочки. Все объекты, видимые в оболочке (файлы, каталоги, серверы, рабочие группы и т. д.), имеют уникальные идентификаторы среди объектов в родительской папке. Эти идентификаторы называются идентификаторами элементов и имеют тип данных SHITEMID , как определено в файле заголовка Shtypes.h. Идентификатор элемента — это поток байтов переменной длины, содержащий сведения, идентифицирующий объект в папке. Только создатель идентификатора элемента знает его содержимое и формат. Единственная часть идентификатора элемента, которую использует оболочка, — это первые два байта, которые определяют размер идентификатора.
Каждая родительская папка имеет собственный идентификатор элемента, который идентифицирует ее в своей родительской папке. Таким образом, любой объект оболочки можно однозначно идентифицировать с помощью списка идентификаторов элементов. В родительской папке хранится список идентификаторов для содержащихся в ней элементов. Список имеет тип данных ITEMIDLIST . Списки идентификаторов элементов выделяются оболочкой и могут передаваться через интерфейсы оболочки, например IShellFolder. Важно помнить, что каждый идентификатор в списке идентификаторов элементов имеет смысл только в контексте родительской папки.
Приложение может задать список идентификаторов элементов ярлыка с помощью метода IShellLink::SetIDList . Этот метод полезен при настройке ярлыка для объекта, который не является файлом, например принтера или диска. Приложение может получить список идентификаторов элементов ярлыка с помощью метода IShellLink::GetIDList .
Использование ссылок оболочки
В этом разделе приведены примеры, демонстрирующие создание и разрешение ярлыков в приложении на основе Win32. В этом разделе предполагается, что вы знакомы с программированием Win32, C++ и OLE COM.
Создание ярлыка и ярлыка папки для файла
Пример функции CreateLink в следующем примере создает ярлык. Параметры включают указатель на имя файла для ссылки, указатель на имя создаваемого ярлыка и указатель на описание ссылки. Описание состоит из строки «Ярлык к имени файла«, где имя файла — это имя файла, на который необходимо создать ссылку.
Чтобы создать ярлык папки с помощью примера функции CreateLink, вызовите CoCreateInstance с помощью CLSID_FolderShortcut вместо CLSID_ShellLink (CLSID_FolderShortcut поддерживает IShellLink). Весь остальной код остается прежним.
Так как CreateLink вызывает функцию CoCreateInstance , предполагается, что функция CoInitialize уже была вызвана. CreateLink использует интерфейс IPersistFile для сохранения ярлыка и интерфейс IShellLink для хранения имени и описания файла.
// CreateLink - Uses the Shell's IShellLink and IPersistFile interfaces // to create and store a shortcut to the specified object. // // Returns the result of calling the member functions of the interfaces. // // Parameters: // lpszPathObj - Address of a buffer that contains the path of the object, // including the file name. // lpszPathLink - Address of a buffer that contains the path where the // Shell link is to be stored, including the file name. // lpszDesc - Address of a buffer that contains a description of the // Shell link, stored in the Comment field of the link // properties. #include "stdafx.h" #include "windows.h" #include "winnls.h" #include "shobjidl.h" #include "objbase.h" #include "objidl.h" #include "shlguid.h" HRESULT CreateLink(LPCWSTR lpszPathObj, LPCSTR lpszPathLink, LPCWSTR lpszDesc) < HRESULT hres; IShellLink* psl; // Get a pointer to the IShellLink interface. It is assumed that CoInitialize // has already been called. hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl); if (SUCCEEDED(hres)) < IPersistFile* ppf; // Set the path to the shortcut target and add the description. psl->SetPath(lpszPathObj); psl->SetDescription(lpszDesc); // Query IShellLink for the IPersistFile interface, used for saving the // shortcut in persistent storage. hres = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf); if (SUCCEEDED(hres)) < WCHAR wsz[MAX_PATH]; // Ensure that the string is Unicode. MultiByteToWideChar(CP_ACP, 0, lpszPathLink, -1, wsz, MAX_PATH); // Add code here to check return value from MultiByteWideChar // for success. // Save the link by calling IPersistFile::Save. hres = ppf->Save(wsz, TRUE); ppf->Release(); > psl->Release(); > return hres;Разрешение ярлыка
Приложению может потребоваться доступ к ярлыку, который был создан ранее, и управлять им. Эта операция называется разрешением ярлыка.
Определяемая приложением функция ResolveIt в следующем примере разрешает ярлык. Его параметры включают дескриптор окна, указатель на путь ярлыка и адрес буфера, который получает новый путь к объекту. Дескриптор окна определяет родительское окно для всех окон сообщений, которые может потребоваться отобразить оболочке. Например, оболочка может отображать окно сообщения, если ссылка находится на носителе без общего доступа, если возникают проблемы с сетью, если пользователю необходимо вставить гибкий диск и т. д.
Функция ResolveIt вызывает функцию CoCreateInstance и предполагает, что функция CoInitialize уже была вызвана. Обратите внимание, что ResolveIt должен использовать интерфейс IPersistFile для хранения сведений о ссылке. IPersistFile реализуется объектом IShellLink . Сведения о ссылке должны быть загружены до получения сведений о пути, как показано далее в примере. Если не загрузить сведения о ссылке, вызовы функций-членов IShellLink::GetPath и IShellLink::GetDescription завершаются сбоем.
// ResolveIt - Uses the Shell's IShellLink and IPersistFile interfaces // to retrieve the path and description from an existing shortcut. // // Returns the result of calling the member functions of the interfaces. // // Parameters: // hwnd - A handle to the parent window. The Shell uses this window to // display a dialog box if it needs to prompt the user for more // information while resolving the link. // lpszLinkFile - Address of a buffer that contains the path of the link, // including the file name. // lpszPath - Address of a buffer that receives the path of the link target, including the file name. // lpszDesc - Address of a buffer that receives the description of the // Shell link, stored in the Comment field of the link // properties. #include "stdafx.h" #include "windows.h" #include "shobjidl.h" #include "shlguid.h" #include "strsafe.h" HRESULT ResolveIt(HWND hwnd, LPCSTR lpszLinkFile, LPWSTR lpszPath, int iPathBufferSize) < HRESULT hres; IShellLink* psl; WCHAR szGotPath[MAX_PATH]; WCHAR szDescription[MAX_PATH]; WIN32_FIND_DATA wfd; *lpszPath = 0; // Assume failure // Get a pointer to the IShellLink interface. It is assumed that CoInitialize // has already been called. hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl); if (SUCCEEDED(hres)) < IPersistFile* ppf; // Get a pointer to the IPersistFile interface. hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf); if (SUCCEEDED(hres)) < WCHAR wsz[MAX_PATH]; // Ensure that the string is Unicode. MultiByteToWideChar(CP_ACP, 0, lpszLinkFile, -1, wsz, MAX_PATH); // Add code here to check return value from MultiByteWideChar // for success. // Load the shortcut. hres = ppf->Load(wsz, STGM_READ); if (SUCCEEDED(hres)) < // Resolve the link. hres = psl->Resolve(hwnd, 0); if (SUCCEEDED(hres)) < // Get the path to the link target. hres = psl->GetPath(szGotPath, MAX_PATH, (WIN32_FIND_DATA*)&wfd, SLGP_SHORTPATH); if (SUCCEEDED(hres)) < // Get the description of the target. hres = psl->GetDescription(szDescription, MAX_PATH); if (SUCCEEDED(hres)) < hres = StringCbCopy(lpszPath, iPathBufferSize, szGotPath); if (SUCCEEDED(hres)) < // Handle success >else < // Handle the error >> > > > // Release the pointer to the IPersistFile interface. ppf->Release(); > // Release the pointer to the IShellLink interface. psl->Release(); > return hres; >Создание ярлыка для нефайлового объекта
Создание ярлыка для нефайлового объекта, например принтера, аналогично созданию ярлыка для файла, но вместо задания пути к файлу необходимо задать список идентификаторов для принтера. Чтобы задать список идентификаторов, вызовите метод IShellLink::SetIDList , указав адрес списка идентификаторов.
Каждый объект в пространстве имен оболочки имеет идентификатор элемента. Оболочка часто объединяет идентификаторы элементов в списки, завершающиеся нулевым значением, состоящие из любого количества идентификаторов элементов. Дополнительные сведения об идентификаторах элементов см. в разделах Идентификаторы элементов и Списки идентификаторов.
Как правило, если требуется задать ярлык для элемента без имени файла, например принтера, у вас уже будет указатель на интерфейс IShellFolder объекта. IShellFolder используется для создания расширений пространства имен.
Получив идентификатор класса для IShellFolder, можно вызвать функцию CoCreateInstance , чтобы получить адрес интерфейса. Затем можно вызвать интерфейс для перечисления объектов в папке и получения адреса идентификатора элемента для объекта, который вы ищете. Наконец, можно использовать адрес в вызове функции-члена IShellLink::SetIDList , чтобы создать ярлык для объекта .
— элемент ссылки
Этот атрибут сообщает о том, что эта ссылка должна быть использована для скачивания файла, и, когда пользователь нажимает на ссылку, ему будет предложено сохранить файл как локальный. Если у этого атрибута есть значение, оно будет использовано как заполненное название файла в Окне сохранения, которое открывается, когда пользователь нажимает на ссылку (пользователь может поменять название перед сохранением файла). Ограничений на позволенные значения нет (хотя оно будет конвертировано в нижние подчёркивания, предотвращая специфичные пути), но стоит обратить внимание, что у большинства файловых систем есть ограничения на то, какие знаки препинания поддерживаются файловой системой, и браузеры регулируют названия согласно ограничениям.
Примечание:
- Атрибут может быть использован вместе с blob: URLs и data: URLs , чтобы пользователи могли проще скачать контент, который сгенерирован с помощью JavaScript (например, картинка, созданная с помощью онлайн-сайта для рисования).
- Если представлен HTTP-заголовок Content-Disposition:, и он содержит иное название, у HTTP-заголовка есть преимущество над атрибутом.
- Если этот атрибут установлен и Content-Disposition: установлен на inline , Firefox отдаёт преимущество Content-Disposition , но в тоже время Chrome отдаёт преимущество атрибуту download .
- Этот атрибут соблюдается только на ресурсах с тем же доменом.
Единственный обязательный атрибут для определения ссылки в HTML4, но больше необязательный в HTML5. Упущение этого атрибута создаёт ссылку-заполнитель. Атрибут href указывает ссылку: либо URL, либо якорь. Якорь — это название после символа # , который указывает на элемент (ID (en-US) ) на текущей странице. URL не ограничены только ссылками на HTTP, они могут использовать любой протокол, поддерживающийся браузером. Например, file , ftp и mailto работают в большинстве браузеров.
Этот атрибут сообщает язык документа по ссылке. Это чисто контрольная информация. Разрешённые значения определены в BCP47 для HTML5 и RFC1766 для HTML4. Используйте этот атрибут, только если задан href .
Этот атрибут уведомляет указанные в нём URL, что пользователь перешёл по ссылке.
Этот атрибут сообщает, какую информацию передавать ресурсу по ссылке:
- «no-referrer» не отправляет заголовок Referer .
- «no-referrer-when-downgrade» не отправляет заголовок Referer ресурсу без TLS (HTTPS). Это стандартное поведение браузера, если не указана иная политика.
- «origin» отправляет такую информацию о текущей странице, как адрес, протокол, хост и порт.
- «origin-when-cross-origin» отправляет другим ресурсам только протокол, хост и порт, а внутри ресурса также отправляет путь.
- «unsafe-url» отправляет только ресурс и адрес (но не пароли или никнеймы). Это значение небезопасно, так как могут утечь ресурс и адрес с TLS-защищённых ресурсов на небезопасные.
Для ссылок, которые содержат атрибут href , этот атрибут устанавливает отношения между ссылками. Значением является список значений (en-US) , разделённый пробелами. Значения и их семантика будут зарегистрированы другими сайтами, которые могут иметь произвольное значение к документу автора. Значением по умолчанию является void , если не задано иное. Используйте этот тег, только если задан атрибут href .
Этот атрибут определяет, где показать содержимое по ссылке. В HTML4, это название и ключевое слово фрейма. В HTML5, это название или ключевое слово в браузере (например, вкладка, окно или iframe). У следующих ключевых слов специальные значения:
- _self загружает документ в текущем фрейме в HTML4 (или текущей вкладке в HTML5) как текущий. Это значение по умолчанию, если не указано иное значение.
- _blank загружает документ в новой окне в HTML4 или вкладке в HTML5.
- _parent загружает документ в родительском фрейме в HTML4 или в родительской вкладке в HTML5. Если нет родителя, параметр будет вести себя как _self : Load the response into the HTML4 frameset parent of the current frame or HTML5 parent browsing context of the current one. If there is no parent, this option behaves the same way as _self .
- _top в HTML4 загружает документ в новом окне, игнорируя другие фреймы. В HTML5 загружает в окне высшего уровня. Если родителя нет, опция ведёт себя как _self .Используйте этот атрибут только если указан href .
Примечание: Используя target , вы должны добавлять rel=»noopener noreferrer» , чтобы избежать эксплуатацию API window.opener .
Этот атрибут определяет MIME-тип для документа по ссылке. Обычно это используется как контрольная информация, но в будущем браузеры могут добавлять маленькую иконку для медиафайлов. Например, браузер может добавить маленькую иконку мегафона, если тип файла установлен как audio/wav .Используйте этот атрибут только если указан href .
Устаревшие
Этот атрибут определяет кодировку документа по ссылке. Значением является разделённый пробелами или запятыми список кодировок. Значением по умолчанию является ISO-8859-1.
Предупреждение: Этот атрибут является устарелым в HTML5 и не должен использоваться. Чтобы достичь такого же эффекта, используйте HTTP-заголовок Content-Type на ссылающемся ресурсе.
Для использования с формой объекта, этот атрибут использует разделённый запятыми список чисел для определения координат объекта на странице.
Этот атрибут обязателен в определении якоря на странице. Значение имени схоже со значением id и должен быть уникальным идентификатором и состоять из букв и цифр. Согласно спецификации HTML 4.01, и id , и name могут быть использованы с элементом , пока у них идентичные значения.
Этот атрибут определяет обратную ссылку, обратные отношения атрибута rel . Это полезно, чтобы отобразить, откуда пришёл объект как автор или документ.
Этот атрибут используется, чтобы определить выбранный регион для ссылок на источник гипертекста, которые соединены с фигурой для создания изображения-карты. Значения для атрибута — circle , default , polygon и rect . Формат координат зависит от выбранной формы. Для circle — x , y , r , где x и y — пиксельные координаты центра круга и r — радиус в пикселях. Для rect — x , y , w , h , где x и y — координаты верхнего левого угла прямоугольника, а w и h — ширина и высота соответственно. Значениями polygon для координатор формы являются x1 , y1 , x2 , y2 . Каждая пара x , y определяет точку в полигоне, с последующей точкой становится прямой линией, и последняя точка объединяется с первой. Значение default для форм требует, чтобы полностью закрытая территория, например, изображение, было использовано.
Примечание: Желательно использовать атрибут usemap для элемента и связанного элемента , чтобы определить горячие точки вместо атрибутов формы.
Нестандартные
datafld Non-standard
Этот атрибут определяет название столбца из объекта исходных данных, который принимает связанные данные.
**Предупреждение:**Этот атрибут нестандартный и не должен использоваться. Для достижения такого же эффекта, используйте скрипты и такие механизмы, как XMLHttpRequest, чтобы динамично заполнять страницу.
Поддержка Gecko Presto WebKit Trident Не реализована Не реализована Не реализована IE4, IE5, IE6, IE7 (Убрана в IE8) Нормативный документ Microsoft’s Data Binding: dataFld Property (MSDN) datasrc Non-standard
Этот атрибут сообщает ID объекта исходных данных, который принимает связанные данные с этим элементом.
**Предупреждение:**Этот атрибут нестандартный и не должен использоваться. Для достижения такого же эффекта, используйте скрипты и такие механизмы, как XMLHttpRequest, чтобы динамично заполнять страницу.
Поддержка Gecko Presto WebKit Trident Не реализована Не реализована Не реализована IE4, IE5, IE6, IE7 (Убрана в IE8) Нормативный документ Microsoft’s Data Binding: dataSrc Property (MSDN) methods Non-standard
Значение этого атрибута предоставляет информацию о функциях, которые могут быть выполнены на объекте. Обычно значения даны HTTP-протоколом, когда он использован, но может (для похожих целей, как для атрибута title ) быть полезным для включения контрольной информации в ссылке. Например, браузер может выбрать другой тип рендеринга для ссылки как функцию определённых методов; что-то, что может быть найдено, может иметь другую иконку, или внешняя ссылка может получить индикатор перехода с текущего сайта. Этот элемент не понимается или не поддерживается полностью даже браузером Internet Explorer 4, который определил этот атрибут. Значения methods (MSDN).
Этот атрибут, предложенный Microsoft, определяет отношения уникального названия ресурса (URN) с ссылкой. Хотя он основан на стандартах работы нескольких лет назад, значение URN всё ещё не определено полностью, поэтому этот атрибут не имеет значения. Значения urn (MSDN).
Создание ссылок
Узнайте, как настроить навигацию между веб-страницами. В Dreamweaver можно связывать ссылками файлы и документы, обновлять, изменять и проверять эти ссылки.
Перед созданием ссылки следует разобраться в работе абсолютных ссылок и ссылок относительно документа и корня сайта. В документе можно создать несколько типов ссылок.
- Ссылка на другой документ или файл — графический, звуковой, видеофайл или PDF-файл.
- Именованная ссылка на привязку документа, с помощью которой можно переместиться в определенное место документа.
- Ссылка на адрес электронной почты, при щелчке на которую открывается окно нового письма с заполненной строкой адресата.
- Нулевые ссылки или ссылки на сценарии, с помощью которых можно присоединять поведение к объектам или выполнять код JavaScript.
Ссылки на изображение, объекты, текст или другие документы или файлы можно создавать с помощью инспектора свойств или значка «Указать файл».
Dreamweaver создает ссылки на другие страницы сайта с помощью путей относительно документа. Можно настроить Dreamweaver таким образом, что новые ссылки будут создаваться с помощью путей относительно корневого каталога.
Следует всегда сохранять новый файл перед созданием пути относительно документа. Подобные пути не работают без определенной начальной позиции. Если перед сохранением файла создать путь относительно документа, Dreamweaver будет использовать абсолютный путь, который начинается с file://, пока файл не будет сохранен. После сохранения файла Dreamweaver преобразует путь file:// в относительный путь.
Добавление вариантов поведения JavaScript к ссылкам
Присоединить поведение можно к любой ссылке в документе. При вставке связанных элементов в документы можно использовать следующие варианты поведения.
Задать текст строки состояния.
Определяет текст сообщения и отображает его на панели состояния в нижнем левом углу окна браузера. Например, с помощью этого поведения можно отображать на панели состояния целевой объект ссылки, а не отображать в ней URL-адрес.
Открытие окна браузера.
Открывает URL-адрес в новом окне. Можно указать свойства нового окна: имя, размер, атрибуты (а также задать, доступны ли для изменений его размеры, отображается ли строка меню и т. д.).
Редактирует меню переходов. Можно изменить список элементов меню, определить другой связанный файл или изменить расположение браузера, в котором открывается связанный документ.
Создание ссылок на документы с помощью инспектора свойств
Для создания ссылок на изображение, объект, текст или другой документ или файл можно использовать значок папки в инспекторе свойств или поле «Ссылка».
Выберите текст или изображение в представлении «Дизайн» окна документа.
Откройте инспектор свойств («Окно» > «Свойства») и выполните одно из действий, описанных ниже.
- Щелкните значок папки , находящийся справа от поля «Ссылка», и укажите нужный файл. Путь к связанному документу появится в поле URL-адреса. С помощью всплывающего меню «Относительно» в диалоговом окне «Выбор файла» создайте путь относительно документа или относительно корня сайта и нажмите кнопку «ОК». Выбранный тип пути применяется только к текущей ссылке. (Установленную по умолчанию настройку поля «Относительно» можно изменить для каждого сайта.)
- Введите путь и имя документа в поле «Ссылка». При создании ссылки на документ на текущем сайте введите путь относительно документа или корня сайта. При создании ссылки на документ на другом сайте введите абсолютный путь вместе с протоколом (например, http://). Аналогичные действия можно выполнить при вводе ссылки на еще не созданный файл.
В раскрывающемся списке «Назначение» выберите расположение документа:
- _blank означает загрузку связанного документа в новом окне браузера без имени.
- _parent загружает связанный документ в родительский фрейм или родительское окно фрейма, содержащего ссылку. Если содержащий ссылку фрейм не является вложенным, то связанный документ загружается в полное окно браузера.
- _self загружает связанный документ в тот же фрейм или то же окно, в котором находится ссылка. Это назначение установлено по умолчанию, поэтому обычно его можно не определять.
- _top загружает связанный документ в полное окно браузера, тем самым удаляя все фреймы.
- _new означает загрузку связанного документа в новом окне.
Создание гиперссылок
Гиперссылки действительно важны — они делают Интернет Интернетом. В этой статье представлен синтаксис, необходимый для создания ссылки, а также обсуждаются лучшие практики обращения со ссылками.
Предварительные требования: Базовое знакомство с HTML, описанное в статье Начало работы c HTML. Форматирование текста в HTML, описанное в статье Основы редактирования текста в HTML. Задача: Научиться эффективно использовать гиперссылки и связывать несколько файлов вместе. Что такое гиперссылка?
Гиперссылки — одно из самых интересных нововведений Интернета. Они были особенностью Сети с самого начала, но именно они превращают Интернет в Интернет. Они позволяют нам связывать наши документы с любым другим документом (или ресурсом), с которым мы хотим. С их помощью мы также можем связывать документы с их конкретными частями, и мы можем сделать приложения доступными на простом веб-адресе (сравните это с локальными приложениями, которые должны быть установлены, и другими такими же вещами). Почти любой веб-контент может быть преобразован в ссылку, так что когда вы кликаете по ней (или иным образом активируете), она заставляет веб-браузер перейти на другой веб-адрес (URL.)
Примечание: URL-адрес может указывать на файлы HTML, текстовые файлы, изображения, текстовые документы, видео и аудиофайлы и все остальное, что может жить в Интернете. Если веб-браузер не знает, как отображать или обрабатывать файл, он спросит вас, хотите ли вы открыть файл (в этом случае обязанность открытия или обработки файла передаётся в соответствующее локальное приложение на устройстве) или загрузить файл (в этом случае вы можете попытаться разобраться с ним позже).
Например, домашняя страница BBC содержит большое количество ссылок, которые указывают не только на множество новостей, но и на различные области сайта (меню), страницы входа / регистрации (пользовательские инструменты) и многое другое.

Анатомия ссылки
Простая ссылка создаётся путём обёртывания текста (или другого содержимого, смотрите Ссылки-блоки), который вы хотите превратить в ссылку, в элемент , и придания этому элементу атрибута href (который также известен как гипертекстовая ссылка, или цель), который будет содержать веб-адрес, на который вы хотите указать ссылку.
p> Я создал ссылку на a href="https://www.mozilla.org/ru/">домашнюю страницу Mozillaa>. p>
Это дало нам следующий результат:
Добавляем информацию через атрибут title
Другим атрибутом, который вы можете добавить к своим ссылкам, является — title . Он предназначен для хранения полезной информации о ссылке. Например, какую информацию содержит страница или другие вещи, о которых вам нужно знать. Например:
p> Я создал ссылку на a href="https://www.mozilla.org/ru/" title="Лучшее место для поиска дополнительной информации о миссии Mozilla и о том, как внести свой вклад" >домашнюю страницу Mozilla a >. p>
Вот что получилось (описание появится, если навести курсор на ссылку):
Примечание: Описание из атрибута title отображается только при наведении курсора, значит люди, полагающиеся на клавиатурные элементы управления для навигации по веб-страницам, будут испытывать трудности с доступом к информации, которую содержит title. Если информация заголовка действительно важна для удобства использования страницы, то вы должны представить её таким образом, который будет доступен для всех пользователей, например, поместив её в обычный текст.
Активное изучение: создаём собственную ссылку
Время упражнения: мы хотели бы, чтобы вы создали любой HTML-документ в текстовом редакторе на своём компьютере (наш базовый пример подойдёт.)
- Попробуйте добавить в тело HTML один или несколько абзацев или другие элементы, о которых вы уже знаете.
- Теперь превратите некоторые фрагменты документа в ссылки.
- Добавьте ссылкам атрибут title .
Ссылки-блоки
Как упоминалось ранее, вы можете превратить любой элемент в ссылку, даже блочный элемент. Если у вас есть изображение, которые вы хотели бы превратить в ссылку, вы можете просто поместить изображение между тегами .
a href="https://www.mozilla.org/ru/"> img src="mozilla-image.png" alt="логотип mozilla со ссылкой на их домашнюю страницу" /> a>
Примечание: вы узнаете гораздо больше об использовании изображений в Интернете в следующей статье.
Краткое руководство по URL-адресам и путям
Чтобы полностью понять адреса ссылок, вам нужно понять несколько вещей про URL-адреса и пути к файлам. Этот раздел даст вам информацию, необходимую для достижения этой цели.
URL-адрес (Uniform Resource Locator, или единый указатель ресурса, но так его никто не называет) — это просто строка текста, которая определяет, где что-то находится в Интернете. Например, домашняя страница Mozilla находится по адресу https://www.mozilla.org/ru/ .
URL-адреса используют пути для поиска файлов. Пути указывают, где в файловой системе находится файл, который вас интересует. Давайте рассмотрим простой пример структуры каталогов (смотрите каталог creating-hyperlinks.)

Корень структуры — каталог creating-hyperlinks . При работе на локальном веб-сайте у вас будет один каталог, в который входит весь сайт. В корне у нас есть два файла — index.html и contacts.html . На настоящем веб-сайте index.html был бы нашей домашней, или лендинг-страницей (веб-страницей, которая служит точкой входа для веб-сайта или определённого раздела веб-сайта).
В корне есть ещё два каталога — pdfs и projects . У каждого из них есть один файл внутри — project-brief.pdf и index.html , соответственно. Обратите внимание на то, что вы можете довольно успешно иметь два index.html файла в одном проекте, пока они находятся в разных местах файловой системы. Многие веб-сайты так делают. Второй index.html , возможно, будет главной лендинг-страницей для связанной с проектом информации.
-
Тот же каталог: Если вы хотите подключить ссылку внутри index.html (верхний уровень index.html ), указывающую на contacts.html , вам просто нужно указать имя файла, на который вы хотите установить ссылку, так как он находится в том же каталоге, что и текущий файл. Таким образом, URL-адрес, который вы используете — contacts.html :
p> Хотите связаться с конкретным сотрудником? Найдите подробную информацию на нашей a href="contacts.html">странице контактовa>. p>
p> Посетите мою a href="projects/index.html">домашнюю страницу проектаa>. p>
p> Ссылка на a href="../pdfs/project-brief.pdf">краткое описание моего проектаa>. p>
Примечание: вы можете объединить несколько экземпляров этих функций в сложные URL-адреса, если необходимо, например: ../../../сложный/путь/к/моему/файлу.html .
Фрагменты документа
Можно ссылаться на определённую часть документа HTML (известную как фрагмент документа), а не только на верхнюю часть документа. Для этого вам сначала нужно назначить атрибут id элементу, с которым вы хотите связаться. Обычно имеет смысл ссылаться на определённый заголовок, поэтому это выглядит примерно так:
h2 id="Почтовый_адрес">Почтовый адресh2>
Затем, чтобы связаться с этим конкретным id , вы должны включить его в конец URL-адреса, которому предшествует знак решётки, например:
p> Хотите написать мне письмо? Используйте наш a href="contacts.html#Почтовый_адрес">почтовый адресa>. p>
Вы даже можете использовать ссылку на фрагмент документа отдельно для ссылки на другую часть того же документа:
p> a href="#Почтовый_адрес">Почтовый адрес компанииa> можно найти в нижней части этой страницы. p>
Абсолютные и относительные URL-адреса
Два понятия, с которыми вы столкнётесь в Интернете, — это абсолютный URL и относительный URL:
Указывает на местоположение, определяемое его абсолютным местоположением в Интернете, включая протокол и доменное имя. Например, если страница index.html загружается в каталог, называемый projects , который находится внутри корня веб-сервера, а домен веб-сайта — http://www.example.com , страница будет доступна по адресу http://www.example.com/projects/index.html (или даже просто http://www.example.com/projects/ ), так как большинство веб-серверов просто ищет целевую страницу, такую как index.html , для загрузки, если он не указан в URL-адресе.).
Абсолютный URL всегда будет указывать на одно и то же местоположение, независимо от того, где он используется.
Указывает расположение относительно файла, с которого вы связываетесь, это больше похоже на случай, который мы рассматривали в предыдущей секции. Для примера, если мы хотим указать со страницы http://www.example.com/projects/index.html на PDF файл, находящийся в той же директории, наш URL может быть просто названием файла — project-brief.pdf — никакой дополнительной информации не требуется. Если PDF расположен в поддиректории pdfs внутри каталога projects , относительная ссылка будет pdfs/project-brief.pdf (аналогичный абсолютный URL был бы http://www.example.com/projects/pdfs/project-brief.pdf .).
Относительный URL будет указывать на различные места, в зависимости от того, где находится файл, в котором он используется, — например, если мы переместим наш файл index.html из каталога projects в корневой каталог веб-сервера (верхний уровень, не в директорию) , то относительный URL pdfs/project-brief.pdf будет вести на http://www.example.com/pdfs/project-brief.pdf , а не на http://www.example.com/projects/pdfs/project-brief.pdf .
Советуем вам основательно разобраться в этой теме!
Практика написания хороших ссылок
При написании ссылок рекомендуется следовать некоторым правилам. Давайте рассмотрим их.
Используйте чёткие формулировки описания ссылок
На вашей странице легко добавить ссылки. Но этого не совсем достаточно. Мы должны сделать наши ссылки доступными для всех читателей, независимо от их возможностей и инструментов просмотра страницы, которые они предпочитают. Например:
- Пользователям программ читающих с экрана нравится переходить по ссылкам на странице, читая адрес ссылки в тексте.
- Поисковые системы используют текст ссылки для индексирования файлов, поэтому рекомендуется включать ключевые слова в текст ссылки, чтобы эффективно описывать, куда ведёт ссылка.
- Пользователи часто бегло просматривают страницу, не читая каждое слово, и их глаза будут привлечены к тексту, который выделяется, например, ссылки. Им будет полезно описание того, куда ведёт ссылка.
Взгляните на этот пример:
Хороший текст ссылки: Скачать Firefox
p>a href="https://firefox.com/"> Скачать Firefox a>p>
Плохой текст ссылки: Нажми сюда, чтобы скачать Firefox
p>a href="https://firefox.com/"> Нажми сюда a> чтобы скачать Firefoxp>
- Не пишите URL-адрес как часть текста ссылки. URL-адреса выглядят сложными, а звучат ещё сложнее, когда программы чтения с экрана читают их по буквам.
- Не пишите «ссылка» или «ссылки на» в тексте ссылки — это лишнее. Программы чтения с экрана сами проговаривают, что есть ссылка. На экране пользователи также видят, что есть ссылка, потому что ссылки, как правило, оформлены в другом цвете и подчёркнуты (подчёркивая ссылки, вы соблюдаете правила хорошего тона, поскольку пользователи привыкли к этому).
- Следите за тем, чтобы текст ссылки был как можно короче. Длинный текст ссылки особенно раздражает пользователей программ чтения с экрана, которым придётся услышать всё, что написано.
- Минимизируйте случаи, когда несколько копий одного и того же текста ссылок указывает на разные страницы. Это может вызвать проблемы для пользователей программ чтения с экрана, которые часто вызывают список ссылок — несколько ссылок, помеченных как «нажмите здесь», «нажмите здесь», «нажмите здесь», будут путать.
Используйте относительные ссылки, где это возможно
Из прочитанного выше, вы можете подумать, что всё время использовать абсолютные ссылки — хорошая идея; в конце концов, они не ломаются, когда страница перемещается. Тем не менее, лучше использовать относительные ссылки везде, где это возможно, в пределах одного сайта (при ссылке на другие сайты необходимо использовать абсолютную ссылку):
- Во-первых, гораздо проще прописать в коде относительные URL-адреса, как правило, они намного короче абсолютных URL-адресов, что значительно упрощает чтение кода
- Во-вторых, использование относительных URL-адресов эффективней по следующей причине. Когда вы используете абсолютный URL-адрес, браузер начинает поиск реального местоположения сервера запрашивая адрес у Domain Name System (DNS; также прочтите Как работает web), затем он переходит на этот сервер и находит файл, который запрашивается. С относительным URL-адресом проще: браузер просто ищет файл, который запрашивается на том же сервере. Используя абсолютные URL-адреса вместо относительных, вы постоянно нагружаете свой браузер дополнительной работой.
Создавая ссылки на не HTML ресурсы — добавляйте описание
Когда вы создаёте ссылку на файл, нажав на который можно загрузить документ PDF или Word или открыть просмотр видео, прослушивание аудио файла или перейти на страницу с другим, неожиданным для пользователя результатом (всплывающее окно или загрузка Flash-фильма), добавляйте чёткую формулировку, чтобы уменьшить путаницу. Отсутствие описания может раздражать пользователя. Приведём пример:
- Если вы используете соединение с низкой пропускной способностью и вдруг нажмёте на ссылку без описания, начнётся загрузка большого файла.
- Если у вас нет установленного Flash-плеера и вы нажмёте ссылку, то внезапно перейдёте на страницу с Flash-контентом.
Посмотрите на примеры, чтобы увидеть, как добавить описание:
p> a href="http://www.example.com/large-report.pdf"> Скачать отчёт о продажах (PDF, 10MB) a> p> p> a href="http://www.example.com/video-stream/"> Посмотреть видео (видео откроется в отдельном окне, HD качество) a> p> p> a href="http://www.example.com/car-game"> Играть в гонки (необходим Flash) a> p>
Используйте атрибут download, когда создаёте ссылку
Когда создаёте ссылку на файл, который должен быть загружен, а не открыт в браузере, можете использовать атрибут download , чтобы создать имя файла по умолчанию для сохранения . Приведём пример ссылки для загрузки браузера Firefox 39:
a href="https://download.mozilla.org/?product=firefox-39.0-SSL&os=win&lang=en-US" download="firefox-39-installer.exe"> Скачать Firefox 39 для Windows a>
Активное изучение: создание меню навигации
Для этого упражнения мы хотим, чтобы вы создали ссылки на страницы в меню навигации в многостраничном сайте. Это один из распространённых способов создания сайта: на каждой странице используется одна и та же структура страниц, включая одно и то же меню навигации, поэтому при нажатии ссылок создаётся впечатление, что вы остаётесь в одном месте: меню остаётся на месте, а контент меняется.
Вам нужно скачать или создать следующие страницы в одном каталоге (Смотрите navigation-menu-start):
- Добавьте неупорядоченный список в указанном месте в любом html-файле. Список должен состоять из имён страниц (index, projects и т.д.). Меню навигации обычно представляет собой список ссылок, поэтому создание неупорядоченного списка семантически верно.
- Создайте ссылки каждому элементу списка, ведущие на эти страницы.
- Скопируйте созданное меню в каждую страницу.
- На каждой странице удалите только ссылку, которая указывает на эту же страницу (на странице index.html удалить ссылку index и так далее). Дело в том, что, находясь на странице index.html, нам незачем видеть ссылку в меню на эту же страницу. С одной стороны, нам незачем ещё раз переходить на эту же страницу, с другой, такой приём помогает визуально определить, смотря на меню, в какой части сайта мы находимся.
Когда закончите задание, посмотрите, как это должно выглядеть:

Примечание: Если не удаётся сделать, или вы не уверены, что сделали верно, посмотрите наш вариант navigation-menu-marked-up.
Ссылки электронной почты
Можно создавать ссылки или кнопки, которые при нажатии открывают новое исходящее сообщение электронной почты, а не ссылку на ресурс или страницу. Для этого используется элемент и mailto: — адрес почты.
Самыми простыми и часто используемыми формами mailto: являются subject, cc, bcc и body; дальше прописываем адрес электронной почты. Например:
a href="mailto:nowhere@mozilla.org">Отправить письмо для nowherea>
В результате получим ссылку вида: Отправить письмо для nowhere.
Сам адрес электронной почты не является обязательным для заполнения. Если оставить это поле пустым (в поле href оставить только «mailto:»), откроется новое исходящее сообщение почтовой программой, в поле получателя будет пусто. Это можно использовать для кнопки «Поделиться».
Особенности и детали
Помимо адреса электронной почты, вы можете предоставить другую информацию. Фактически, любые стандартные поля для отправки почты могут быть добавлены к указанному вами адресу mailto . Часто используемыми из них являются «subject», «cc» и «body» (которые не являются истинным полем заголовка, но позволяют указать дополнительную информацию для нового сообщения электронной почты). Каждое поле и его значение задаются в качестве условия запроса.
Вот пример который включает cc(кому отправить копию сообщения, все получатели письма видят список тех кто это письмо получит), bcc(скрытый адрес получателя, никто из получателей не будет видеть полный список получателей письма), subject(тема письма) и body(текст сообщения):
a href="mailto:nowhere@mozilla.org?cc=name2@rapidtables.com&bcc=name3@rapidtables.com&subject=The%20subject%20of%20the%20email &body=The%20body%20of%20the%20email"> Send mail with cc, bcc, subject and body a>
Примечание: Значение каждого поля должно быть написано в URL-кодировке (то есть с непечатаемыми символами и пробелами percent-escaped). Обратите внимание на знак вопроса (?) для разделения основного адреса и дополнительных полей, амперсанд (&) для разделения каждого поля mailto: URL. Для этого используется стандартное описание URL запроса. Прочтите о методе GET, чтобы лучше понимать описание URL запроса.
Вот несколько примеров использования mailto URLs:
- mailto:
- mailto:nowhere@mozilla.org
- mailto:nowhere@mozilla.org,nobody@mozilla.org
- mailto:nowhere@mozilla.org?cc=nobody@mozilla.org
- mailto:nowhere@mozilla.org?cc=nobody@mozilla.org&subject=This%20is%20the%20subject
Заключение
Этой информации достаточно для создания ссылок! Вы вернётесь к ссылкам позже, когда начнёте изучать стили. Дальше вы рассмотрите семантику текста и более сложные и необычные возможности, которые будут полезны при создании контента сайта. В следующей главе будет рассматриваться продвинутое форматирование текста.
В этом модуле
- Начало работы с HTML
- Что такое заголовок? Метаданные в HTML
- Основы редактирования текста в HTML
- Создание гиперссылок
- Углублённое форматирование текста
- Структура документа и веб-сайта
- Отладка HTML
- Разметка письма
- Структурируем страницу
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 3 авг. 2023 г. by MDN contributors.
Your blueprint for a better internet.
