Что такое код domdocumenttype >public_id


Содержание

DomDocumentType->public_ >(PHP 4 >= 4.1.0)

DomDocumentType->public_id — Returns public id of document type

Описание

This function returns the public id of the document type.

Возвращаемые значения

Returns the public id of the DomDocumentType, as a string.

Примеры

The following example echos nothing.

Пример #1 Retrieving the public id

if (! $dom = domxml_open_mem ( $xmlstr )) <
echo «Error while parsing the document\n» ;
exit;
>

$doctype = $dom -> doctype ();
echo $doctype -> public_id ();
?>

Migrating to PHP 5

Use the publicId property of the DOMDocumentType object.

Что такое код domdocumenttype &#62;public_id

DomDocumentType->public_id — возвращает public id типа документа.

Описание

string DomDocumentType->public_id (void)

Эта функция возвращает public id типа документа.

Следующий пример не выводит/echo ничего.

Пример 1. Запрашивание public >

Назад Оглавление Вперёд
DomDocumentType->notations Вверх DomDocumentType->system_id

Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:

DomDocumentType->public_ >system_ >
Руководство по PHP
Пред. След.

DomDocumentType->public_ >

(no version information, might be only in CVS)

DomDocumentType->public_id() — Returns public id of document type

Описание

This function returns the public id of the document type.

Возвращаемые значения

Returns the public >DomDocumentType , as a string.

Примеры

The following example echos nothing.

Пример 1. Retrieving the public id

if (! $dom = domxml_open_mem ( $xmlstr )) <
echo «Error while parsing the document\n» ;
exit;
>

$doctype = $dom -> doctype ();
echo $doctype -> public_id ();
?>

Migrating to PHP 5

Use the publicId property of the DOMDocumentType object.

DOMImplementation::createDocumentType — Создает пустой объект класса DOMDocumentType

DOMImplementation::createDocumentType — Создает пустой объект класса DOMDocumentType

Описание

Создает пустой объект класса DOMDocumentType. Объявления сущностей и условных обозначений будет недоступно. Ссылки на сущности не будут заменяться, и умолчания значений атрибутов не будут применены.

Список параметров

Стандартизованное имя типа документа для создания.

Общедоступный идентификатор внешнего подмножества.

Системный идентификатор внешнего подмножества.

Возвращаемые значения

Новый объект класса DOMDocumentType с атрибутом ownerDocument установленным в NULL .

Ошибки

DOM_NAMESPACE_ERR

Возникает, если обнаружена ошибка в строке qualifiedName .

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

Примеры

Пример #1 Создание документа с прикрепленной DTD

// Создает экземпляр класса DOMImplementation
$imp = new DOMImplementation ;

// Создает экземпляр класса DOMDocumentType
$dtd = $imp -> createDocumentType ( ‘graph’ , » , ‘graph.dtd’ );

// Создает объект DOMDocument
$dom = $imp -> createDocument ( «» , «» , $dtd );

// установка других параметров
$dom -> encoding = ‘UTF-8’ ;
$dom -> standalone = false ;

// создание пустого элемента
$element = $dom -> createElement ( ‘graph’ );

// присоединение элемента
$dom -> appendChild ( $element );

// извлечение и печать документа
echo $dom -> saveXML ();

Класс DOMDocument

Введение

Представляет все содержимое HTML- или XML-документа; служит корнем дерева документа.

Обзор классов

Свойства

Устарело. Кодировка документа, является доступным только для чтения эквивалентом encoding .

Устарело. Конфигурация, используемая при вызове DOMDocument::normalizeDocument() .

Объявление типа документа, соответствующее этому документу.

Удобный атрибут, предоставляющий прямой доступ к дочернему узлу, как к элементу документа.

Расположение документа или NULL , если оно не определено.

Кодировка документа, как указано в объявлении XML. Этот атрибут отсутствует в последней спецификации DOM Level 3, но является единственным способом манипулирования кодировкой XML-документа в этой реализации.


Форматирует вывод, добавляя отступы и дополнительные пробелы.

Объект класса DOMImplementation, обрабатывающий этот документ.

Указание не убирать лишние пробелы и отступы. По умолчанию TRUE .

Проприетарное свойство. Включает режим восстановления, то есть пытается разобрать некорректно составленные (non-well formed) документы. Этот атрибут не является частью спецификации DOM и специфичен для libxml.

Установите в TRUE для загрузки внешних элементов из объявления типа документа. Может быть полезным при включении элементов с символьными данными в XML-документ.

Устарело. Указание, что документ не зависит от других XML-документов. Это можно определить из XML-объявления. Свойство связано с xmlStandalone .

Выбрасывает исключение DOMException при ошибках. По умолчанию TRUE .

Патентованное свойство. Указывает, заменять или нет элементы документа. Этот атрибут не является частью спецификации DOM и специфичен для libxml.

Загружает DTD и проверяет документ на соответствие. По умолчанию FALSE .

Устарело. Версия XML, соответствует xmlVersion .

Атрибут, определяющий, как часть XML-объявления, кодировку эту документа. Имеет значение NULL в случаях, когда атрибут не задан, либо значение неизвестно, если, например, документ создан в памяти.

Атрибут, определяющий, как часть XML-объявления, что документ является автономным. Принимает значение FALSE , если не указан.

Атрибут, определяющий, как часть XML-объявления, номер версии этого документа. Если объявления в документе нет, но есть поддержка всех особенностей «XML», значение равно «1.0».

Примечания

Расширение DOM использует кодировку UTF-8. Используйте функции utf8_encode() и utf8_decode() для работы с текстами в кодировке ISO-8859-1 или Iconv для других кодировках.

Смотрите также

Содержание

  • DOMDocument::__construct — Создает новый объект DOMDocument
  • DOMDocument::createAttribute — Создать новый атрибут
  • DOMDocument::createAttributeNS — Создает новый атрибут узла с соответствующим пространством имен
  • DOMDocument::createCDATASection — Создает новый узел cdata
  • DOMDocument::createComment — Создать новый узел комментария
  • DOMDocument::createDocumentFragment — Создать новый фрагмент документа
  • DOMDocument::createElement — Создать новый узел элемента
  • DOMDocument::createElementNS — Создать новый узел элемента с соответствующим пространством имен
  • DOMDocument::createEntityReference — Создать новый узел ссылки на сущность
  • DOMDocument::createProcessingInstruction — Создать новый PI-узел
  • DOMDocument::createTextNode — Создать новый текстовый узел
  • DOMDocument::getElementById — Ищет элемент с определенным идентификатором
  • DOMDocument::getElementsByTagName — Ищет все элементы с заданным локальным именем
  • DOMDocument::getElementsByTagNameNS — Ищет все элементы с заданным именем в указанном пространстве имен
  • DOMDocument::importNode — Импортировать узел в текущий документ
  • DOMDocument::load — Загрузка XML из файла
  • DOMDocument::loadHTML — Загрузка HTML из строки
  • DOMDocument::loadHTMLFile — Загрузка HTML из файла
  • DOMDocument::loadXML — Загрузка XML из строки
  • DOMDocument::normalizeDocument — Нормализует документ
  • DOMDocument::registerNodeClass — Регистрация расширенного класса, используемого для создания типа базового узла
  • DOMDocument::relaxNGValidate — Производит проверку документа на правильность построения посредством relaxNG
  • DOMDocument::relaxNGValidateSource — Проверяет документ посредством relaxNG
  • DOMDocument::save — Сохраняет XML-дерево из внутреннего представления в файл
  • DOMDocument::saveHTML — Сохраняет документ из внутреннего представления в строку, используя форматирование HTML
  • DOMDocument::saveHTMLFile — Сохраняет документ из внутреннего представления в файл, используя форматирование HTML
  • DOMDocument::saveXML — Сохраняет XML-дерево из внутреннего представления в виде строки
  • DOMDocument::schemaValidate — Проверяет действительность документа, основываясь на заданной схеме
  • DOMDocument::schemaValidateSource — Проверяет действительность документа, основываясь на схеме
  • DOMDocument::validate — Проверяет документ на соответствие его DTD
  • DOMDocument::xinclude — Проводит вставку XInclude в объекте DOMDocument

User Contributed Notes 16 notes

Showing a quick example of how to use this class, just so that new users can get a quick start without having to figure it all out by themself. ( At the day of posting, this documentation just got added and is lacking examples. )

// Set the content type to be XML, so that the browser will recognise it as XML.
header ( «content-type: application/xml; charset=ISO-8859-15» );

// «Create» the document.
$xml = new DOMDocument ( «1.0» , «ISO-8859-15» );

// Create some elements.
$xml_album = $xml -> createElement ( «Album» );
$xml_track = $xml -> createElement ( «Track» , «The ninth symphony» );

// Set the attributes.
$xml_track -> setAttribute ( «length» , «0:01:15» );
$xml_track -> setAttribute ( «bitrate» , «64kb/s» );
$xml_track -> setAttribute ( «channels» , «2» );

// Create another element, just to show you can add any (realistic to computer) number of sublevels.
$xml_note = $xml -> createElement ( «Note» , «The last symphony composed by Ludwig van Beethoven.» );

// Append the whole bunch.
$xml_track -> appendChild ( $xml_note );
$xml_album -> appendChild ( $xml_track );

// Repeat the above with some different values..
$xml_track = $xml -> createElement ( «Track» , «Highway Blues» );

$xml_track -> setAttribute ( «length» , «0:01:33» );
$xml_track -> setAttribute ( «bitrate» , «64kb/s» );
$xml_track -> setAttribute ( «channels» , «2» );
$xml_album -> appendChild ( $xml_track );

$xml -> appendChild ( $xml_album );

// Parse the XML.
print $xml -> saveXML ();

?>

Output:


The ninth symphony

The last symphony composed by Ludwig van Beethoven.


Highway Blues

If you want your PHP->DOM code to run under the .xml extension, you should set your webserver up to run the .xml extension with PHP ( Refer to the installation/configuration configuration for PHP on how to do this ).

Note that this:
= new DOMDocument ( «1.0» , «ISO-8859-15» );
$xml_album = $xml -> createElement ( «Album» );
$xml_track = $xml -> createElement ( «Track» );
$xml_album -> appendChild ( $xml_track );
$xml -> appendChild ( $xml_album );
?>

is NOT the same as this:
// Will NOT work.
$xml = new DOMDocument ( «1.0» , «ISO-8859-15» );
$xml_album = new DOMElement ( «Album» );
$xml_track = new DOMElement ( «Track» );
$xml_album -> appendChild ( $xml_track );
$xml -> appendChild ( $xml_album );
?>

although this will work:
= new DOMDocument ( «1.0» , «ISO-8859-15» );
$xml_album = new DOMElement ( «Album» );
$xml -> appendChild ( $xml_album );
?>

For those landing here and checking for encoding issue with utf-8 characteres, it’s pretty easy to correct it, without adding any additional output tag to your html.

We’ll be utilizing: mb_convert_encoding

Thanks to the user who shared: SmartDOMDocument in previous comments, I got the idea of solving it. However I truly wish that he shared the method instead of giving a link.

Anyway coming back to the solution, you can simply use:

// checks if the content we’re receiving isn’t empty, to avoid the warning
if ( empty( $content ) ) <
return false ;
>


// converts all special characters to utf-8
$content = mb_convert_encoding ( $content , ‘HTML-ENTITIES’ , ‘UTF-8’ );

// creating new document
$doc = new DOMDocument ( ‘1.0’ , ‘utf-8’ );

//turning off some errors
libxml_use_internal_errors ( true );

// it loads the content without adding enclosing html/body tags and also the doctype declaration
$doc -> LoadHTML ( $content , LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD );

// do whatever you want to do with this code now

?>

I hope it solves the issue for someone! If you need my help or service to fix your code, you can reach me on nabtron.com or contact me at the email mentioned with this comment.

Here’s a small function I wrote to get all page links using the DOMDocument which will hopefully be of use to others

/**
* get_links()
*
* @param string $url
* @return array
*/
function get_links ( $url ) <

// Create a new DOM Document to hold our webpage structure
$xml = new DOMDocument ();

// Load the url’s contents into the DOM
$xml -> loadHTMLFile ( $url );

// Empty array to hold all links to return
$links = array();

//Return the links
return $links ;
>
?>

For anyone else who has been having issues with formatOuput not working, here is a work-around:

rather than just doing something like:

= $xml -> saveXML ();
?>

force it to reload the XML from scratch, then it will format correctly:

= $xml -> saveXML ();
$xml = new DOMDocument ();
$xml -> preserveWhiteSpace = false ;
$xml -> formatOutput = true ;
$xml -> loadXML ( $outXML );
$outXML = $xml -> saveXML ();
?>

A nice and simple node 2 array I wrote, worth a try ;)

function getArray ( $node )
<
$array = false ;

if ( $node -> hasAttributes ())
<
foreach ( $node -> attributes as $attr )
<
$array [ $attr -> nodeName ] = $attr -> nodeValue ;
>
>

if ( $node -> hasChildNodes ())
<
if ( $node -> childNodes -> length == 1 )
<
$array [ $node -> firstChild -> nodeName ] = $node -> firstChild -> nodeValue ;
>
else
<
foreach ( $node -> childNodes as $childNode )
<
if ( $childNode -> nodeType != XML_TEXT_NODE )
<
$array [ $childNode -> nodeName ][] = $this -> getArray ( $childNode );
>
>
>
>

You may need to save all or part of a DOMDocument as an XHTML-friendly string, something compliant with both XML and HTML 4. Here’s the DOMDocument class extended with a saveXHTML method:

/**
* XHTML Document
*
* Represents an entire XHTML DOM document; serves as the root of the document tree.
*/
class XHTMLDocument extends DOMDocument <

/**
* These tags must always self-terminate. Anything else must never self-terminate.
*
* @var array
*/
public $selfTerminate = array(
‘area’ , ‘base’ , ‘basefont’ , ‘br’ , ‘col’ , ‘frame’ , ‘hr’ , ‘img’ , ‘input’ , ‘link’ , ‘meta’ , ‘param’
);

/**
* saveXHTML
*
* Dumps the internal XML tree back into an XHTML-friendly string.
*
* @param DOMNode $node
* Use this parameter to output only a specific node rather than the entire document.
*/
public function saveXHTML ( DOMNode $node = null ) <

if (! $node ) $node = $this -> firstChild ;

$doc = new DOMDocument ( ‘1.0’ );
$clone = $doc -> importNode ( $node -> cloneNode ( false ), true );
$term = in_array ( strtolower ( $clone -> nodeName ), $this -> selfTerminate );
$inner = » ;

if (! $term ) <
$clone -> appendChild (new DOMText ( » ));
if ( $node -> childNodes ) foreach ( $node -> childNodes as $child ) <
$inner .= $this -> saveXHTML ( $child );
>
>

$doc -> appendChild ( $clone );
$out = $doc -> saveXML ( $clone );

return $term ? substr ( $out , 0 , — 2 ) . ‘ />’ : str_replace ( ‘> , «> $inner , $out );

?>

This hasn’t been benchmarked, but is probably significantly slower than saveXML or saveHTML and should be used sparingly.

Что такое код domdocumenttype &#62;public_id

(no version information, might be only in CVS)

DomDocumentType->public_id() — Returns public id of document type

Description >DomDocumentType <
string public_id ( void )
>

This function returns the public id of the document type.

Return Values

Returns the public >DomDocumentType , as a string.

Examples

The following example echos nothing.

Example 1. Retrieving the public id

doctype(); echo $doctype->public_id(); ?>

Migrating to PHP 5

Use the publicId property of the DOMDocumentType object.

Чтобы сообщить Google Аналитике, что два обращения относятся к одному и тому же пользователю, вместе с каждым из этих обращений отправляется уникальный идентификатор пользователя.

Библиотека analytics.js применяет для этого поле Client ID – уникальную строку, которая создается случайным образом и хранится в файлах cookie браузера. Это позволяет ассоциировать с пользователем его последующие переходы на тот же сайт.

По умолчанию библиотека analytics.js сохраняет идентификатор клиента в одном собственном файле cookie _ga , однако его название, домен и срок действия можно изменить. Кроме того, analytics.js создает и другие файлы cookie: _gid , AMP_TOKEN и _gac_

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

Файлы cookie позволяют идентифицировать уникальных пользователей в разных сеансах, но не при смене браузеров или устройств. Если на вашем сайте есть собственная система аутентификации, то с помощью функции User ID вы можете более точно идентифицировать пользователей на всех устройствах.

В этой статье рассказывается, как изменить настройки файлов cookie и как применять поле User ID, чтобы точнее отслеживать пользователей в различных сеансах.

В таблице ниже показаны значения полей по умолчанию в файлах cookie библиотеки analytics.js.

Название поля Тип значения Значение по умолчанию
cookieName Текст _ga
cookieDomain Текст Результат следующего выражения JavaScript:
document.location.hostname
cookieExpires Целое число 63072000 (два года в секундах)

Изменить эти значения можно, задав их в параметре fieldObject команды create . Пример:

Поле cookieDomain задается чаще всего, поэтому команда create принимает cookieDomain как необязательный третий параметр:

Как задать автоматическую конфигурацию домена cookie

Рекомендуемый фрагмент кода отслеживания JavaScript устанавливает для поля cookieDomain значение ‘auto’ .

При автоматической ( ‘auto’ ) конфигурации домена cookieDomain analyltics.js самостоятельно подбирает домен для хранения файлов cookie.

При этом файлы cookie _ga автоматически записываются в домен самого высокого уровня из всех возможных. Например, если ваш сайт расположен по адресу blog.example.co.uk , analytics.js установит домен файлов cookie .example.co.uk . Кроме того, если analytics.js определит, что сервер работает локально (например, localhost ), cookieDomain будет автоматически установлен в ‘none’ .

Срок действия файла cookie обновляется при каждой отправке обращения на серверы Google Аналитики: к текущему времени прибавляется значение поля cookieExpires . Таким образом, если пользователь заходит на сайт раз в месяц, то при использовании значения cookieExpires по умолчанию (2 года) срок действия файла cookie не закончится никогда.

Если вы зададите для времени cookieExpires значение 0 (ноль секунд), этот файл cookie будет работать на основе сеанса, то есть его действие закончится с завершением текущей сессии браузера.

Не следует напрямую работать с наборами cookie analytics.js, поскольку формат файлов cookie в дальнейшем может быть изменен. Вместо этого необходимо использовать readyCallback для ожидания загрузки analytics.js, а затем получать значение clientId , сохраненное в счетчике.

Если вы хотите использовать собственную систему хранения идентификаторов (например, localStorage или Service Worker), отключите установку файлов cookie, указав в поле storage значение ‘none’ .

Если вы сохраняете значения поля clientId самостоятельно, обязательно задайте параметр cliendId при создании счетчика.

Чтобы отключить файлы cookie _gac_

, задайте в поле storeGac команды create значение false :

Хранение идентификаторов клиентов в localStorage


Ниже показано, как можно изменить фрагмент отслеживания JavaScript таким образом, чтобы хранить в объекте localStorage идентификаторы клиентов, а не файлы cookie.

Примечание. В отличие от файлов cookie, на объект localStorage распространяется правило ограничения домена. Если различные области сайта находятся в разных субдоменах или одни страницы работают через протокол http , а другие – через https , вы не сможете отслеживать пользователей между этими страницами с помощью объекта localStorage . Поэтому для хранения идентификаторов клиентов рекомендуется применять файлы cookie.

User ID

User ID – это уникальный номер, который присваивается пользователю и позволяет анонимно идентифицировать его на разных устройствах или на протяжении нескольких сеансов. Подробнее о преимуществах функции User ID…

Вот как настроить функцию User ID с помощью analytics.js:

Аутентификация после загрузки страницы

При создании одностраничных приложений или других динамических веб-сайтов, где аутентификация пользователя выполняется после загрузки страницы, нельзя настраивать User ID при создании ресурса.

В таких случаях следует добавлять в счетчик значение сразу, как только его удается получить, с помощью команды set .

При этом обращения, отправленные, пока значение поля userId не определено, не будут содержать значения User ID. Чтобы связать эти обращения с пользователями, применяется объединение сеансов.

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Алгоритм обращения программы к API VKontakte

Часто бывает мы хотим автоматизировать то или иное действие. Порой спешка или просто лень не дает нам возможности ознакомиться со всей документацией(по API VK).
Разработать программу для работы с API ВКонтакте проще чем кажется. Подойдет любой язык, умеющий отправлять http get запросы (соответственно получать ответ). Например: Delphi, shell, C, Perl, PHP, Python и т. п.

Итак, разберем алгоритм создания программы и интеграции её с ВКонтакте.
Первое что нам нужно сделать, это создать(зарегистрировать) Desktop-приложение.
Нажимаем на кнопку «Подключить сайт» в разделе «Разработчикам»
Вводим название и выбираем тип — Standalone-приложение.

После чего, на ваш мобильный телефон (привязанный к аккуанту) придет код, который необходимо ввести в проверочное поле.
Создается приложение, в настройках нам потребуется ID приложения.

Авторизация приложения с ВКонтакте происходит на базе протокола OAuth 2.0 и состоит из 3х шагов:

  • Открытие окна браузера для аутентификации пользователя на сайте Вконтакте.
  • Пользователь разрешает доступ приложению к запрашиваемым правам.
  • Вконтакте возвращает приложению access_token для доступа к API.

_http://api.vk.com/oauth/authorize?client_ >
, где:
##ID##- Id вашего приложения, полученного ранее;
##ОТОБРАЖЕНИЕ## — внешний вид окна авторизации(page, popup, touch и wap).
##ПРАВА##- список прав доступа приложения к данным пользователя. Указываются через запятую(notify,friends,photos,audio,video,docs,notes,pages,wall,groups,messages,ads) либо в цифровом виде, суммируя необходимые права (1,2,4,8,16,32,64. 262144).
Пример: Получить права на Доступ к друзьям и Доступ к фотографиям пользователя:
2 + 4 = 6; scope=1026 либо scope=friends,photos
Подробнее о правах доступа можно почитать здесь и здесь.

В ответ на запрос, сервер вернет:

access_token=93f22a20ddf1174f939108d43e936cd6bb193469344639c2d1c268f3f65fa86 &expires_in=86400&user_ >
, где access_token — необходимый нам параметр, для отправки последующий запросов к API Вконтакте;
expires_in — время жизни token, после истечения необходимо обновить
( UPD: если в правах указать «offline» или 999999, то токен будет бесконечным);
user_id — id пользователя.
Связь программа-приложение-пользователь установлена. Теперь мы можем отправлять любые запросы к Api(в мерах разрешенных пользователем).
Синтаксис запросов:

_https://api.vkontakte.ru/method/##МЕТОД##?##НАЗВАНИЕ_ПЕРЕМЕННОЙ##=##ЗНАЧЕНИЕ_ПЕРЕМЕННОЙ## &access_token=##ТОКЕН,ПОЛУЧЕНЫЙ_РАНЕЕ##
Список методов и их описание можно посмотреть здесь и здесь.

Для примера рассмотрим метод отправления личного сообщения

Название метода: messages.send
Необходимое право: 4096
Параметры: uid — id пользователя, которому отправляется сообщение, является обязательным.
message — текст сообщения, является обязательным, если не указан attachment.
attachment — приложения к сообщению, указанные через запятую в формате
_ (Пример:photo100172_166443618).
title — Заголовок.
type — 0 (по умолчанию)- обычное, 1 — из чата.

Пример запроса отправки сообщения пользователю id66392446:
_https://api.vkontakte.ru/method/messages.send?u >
В ответ получим ID сообщения или код ошибки.

В качестве примера программы привожу свой php-сценарий автоматического обновления статуса Вконтакте

(До нового года осталось… дней + Случайная фраза из файла).
Создаем php файл, который будет отправлять статус:
pub.php

Теперь добавляем pub.php в cron с обновлением, не чаще чем раз в минуту, и наблюдаем результат.

Таким способом можно автоматически публиковать статьи, фотографии, видео, отправлять сообщения и много других интересных вещей.
Экспериментируйте! Благодарю за внимание.

UPD: перед отправкой текстовую строку необходимо кодировать $text=urlencode($text);

Что такое AMP: подробное руководство по ускоренным мобильным страницам

Время чтения: 24 минуты Нет времени читать? Нет времени?

Ускоренные мобильные страницы или AMP — технология, которая обеспечивает удобное получение информации в интернете с экранов смартфонов и планшетов. Как работает AMP? Как создать и кастомизировать ускоренные мобильные страницы? Какими инструментами могут воспользоваться владельцы сайтов на популярных CMS, включая WordPress, Joomla!, Drupal, OpenCart? С какими подводными камнями сталкиваются вебмастера при внедрении AMP, и как решить проблемы? Ответы на эти и другие вопросы в руководстве.

Что такое AMP и как они работают

AMP — акроним, который образован из первых букв английских слов accelerated mobile pages. По-русски это ускоренные мобильные страницы. Термином обозначают технологию отображения страниц сайта для мобильных пользователей, которая обеспечивает максимальную скорость загрузки сайта.

AMP представляют собой радикально урезанные версии обычных веб-страниц. На ускоренных страницах остается основной контент. Большинство вспомогательных элементов, включая виджеты, формы комментирования, блоки рекомендованного контента, рекламные объявления, на ускоренных страницах отсутствует.

AMP — это платформа с открытым кодом. Поэтому каждый желающий может использовать ускоренные мобильные страницы бесплатно.

Идейным вдохновителем и адвокатом проекта считается Google. Крупнейшая в мире поисковая система использует AMP при формировании страниц поисковой выдачи. Более того, Google кэширует ускоренные страницы сайтов и выступает в роли CDN. Благодаря этому мобильные пользователи быстро загружают AMP даже при низкой скорости передачи данных.

Ускоренные страницы состоят из HTML-разметки со специальными тегами и библиотеки JavaScript. Для создания AMP можно использовать ограниченный набор тегов и скриптов. Это уменьшает функциональность и внешнюю привлекательность страниц, но резко увеличивает скорость их загрузки. Также ускорению загрузки способствует предварительное кэширование.

Серферы могут пользоваться AMP двумя принципиально разными способами. Первый предполагает передачу данных с сервера владельца сайта на компьютер посетителя и отображение в браузере ускоренной версии страницы. Например, на сайте с поддержкой AMP можно настроить автоматическую переадресацию всех мобильных пользователей на ускоренные страницы. Посетитель может попасть на AMP по ссылке с помощью мобильного девайса или добавить к URL в адресной строке браузера на стационарном ПК суффикс /amp/.

Второй способ предполагает просмотр кэшированной версии AMP с сервера Google. Крупнейшая поисковая система мира отображает ссылки на ускоренные страницы в формате карусели в SERP. При просмотре страницы пользователь не переходит на сайт, а просматривает контент со страницы выдачи.

К сожалению, Google не считает нужным показывать AMP-карусели на страницах выдачи, сформированных для моих устройств. Поэтому за пример спасибо Search Engine Land.

В отличие от Google, «Яндекс» не поддерживает технологию AMP.

Пока еще крупнейший поисковик рунета не считает ускоренные мобильные страницы дублями. Это объясняется тем, что AMP ссылаются на канонические страницы с помощью атрибута rel=»canonical».

Тем не менее «Яндекс» индексирует AMP и даже включает их в выдачу. Один из участников популярного SEO-форума рассказал, что поисковик включил ускоренные страницы в выдачу вместо основных. На жалобу техподдержка ответила, что робот не считает атрибут rel=»canonical» строгой директивой. Поэтому AMP оказались в выдаче вместо основных страниц сайта. Топикстартеру пришлось запрещать «Яндексу» индексировать ускоренные страницы в файле robots.txt.

Стоит ли использовать ускоренные мобильные страницы

Чтобы ответить на этот вопрос, нужно уделить внимание преимуществам, недостаткам и результатам внедрения AMP.

Преимущества AMP

Главное преимущество AMP — высокая скорость загрузки. В таблице результаты тестирования базовой и ускоренной версии страницы с помощью нескольких сервисов.

PageSpeed Insights от Google

62 балла для мобильных, 77 баллов для десктопов.

88 баллов для мобильных, 94 балла для десктопов.

Инструмент проверки скорости загрузки от Pingdom

Время загрузки 5,94 секунды, размер страницы 3,5 Мбайт.

Время загрузки 2,46 секунды, размер страницы 381,4 Кбайт.

Инструмент проверки скорости загрузки от GTmetrix

Скорость загрузки 18,6 секунды, размер страницы 3,49 Мбайт.

Время загрузки 3,4 секунды, размер страницы 314 Кбайт.

Ускоренные страницы загружаются в разы быстрее стандартных. Это возможно благодаря значительному уменьшению объема данных с помощью технологии AMP.

Низкая скорость загрузки негативно влияет на пользовательский опыт. Более половины посетителей не ждет отображения контента более 3 секунд.

Быстрая загрузка критически важна для пользователей с мобильными устройствами. Именно поэтому Google предварительно кэширует AMP и выступает в роли CDN для людей, которые пользуются медленным интернетом.

Google учитывает скорость загрузки страниц при ранжировании сайтов. Это важно в контексте тестирования mobile-first индекса. Обеспечивает ли AMP дополнительные преимущества в рейтинге?

В середине 2020 года на саммите Search Engine Journal в Чикаго представитель Google Гарри Ильес заявил, что ускоренные мобильные страницы не входят в число факторов ранжирования. Но специалист не смог однозначно сказать, что AMP не будет фактором ранжирования в будущем.

Что это значит? Технология AMP сама по себе не дает сайтам преимущества при ранжировании. Тем не менее она значительно увеличивает скорость загрузки сайта, которая учитывается при формировании поисковой выдачи.

Новостные сайты и контент-проекты выигрывают от внедрения AMP, если попадают в карусель. Данный элемент отображается в верхней части SERP над результатами поиска. Это обеспечивает сайтам с ускоренными страницами дополнительные переходы.

Итак, основное преимущество ускоренных страниц — высокая скорость загрузки. Она улучшает пользовательский опыт и может опосредованно влиять на позиции сайтов в выдаче Google. Также ресурсы могут получать дополнительные просмотры благодаря карусели AMP.

Недостатки ускоренных мобильных страниц

У AMP много недостатков. Вот основные:

  • Данные о посещении ускоренных страниц не попадают в отчеты «Метрики» и Google Analytics, которые формируются благодаря кодам отслеживания на основных страницах сайта. Чтобы отслеживать эффективность AMP, нужно добавить на них код отслеживания вручную или с помощью плагинов.
  • Ускоренные страницы имеют урезанную функциональность по сравнению с базовыми. На AMP нет навигационного меню, блока похожих публикаций, сайдбара, формы комментирования. Нужные элементы приходится «прикручивать» вручную или с помощью плагинов.
  • Внешний вид AMP отличается от базовых страниц не в лучшую сторону. Ради высокой скорости загрузки вы жертвуете визуальной привлекательностью сайта.
  • На AMP нет сторонних виджетов, например, виджетов групп «Вконтакте» или Facebook.
  • Если Google показывает ускоренные страницы сайта в карусели, пользователи могут читать их, не покидая SERP. Поэтому ваш сайт лишается трафика.
  • Теоретически из-за AMP могут возникать проблемы с индексацией. Пример с «Яндексом» описан выше.

За высокую скорость загрузки приходится платить функциональностью и внешним видом страниц. Стоит отметить, что большую часть недостатков можно полностью или частично устранить. Однако AMP всегда останется упрощенной или даже сокращенной версией базовой страницы сайта.

Результаты внедрения AMP


Сначала личный опыт. Внедрил ускоренные страницы на экспериментальной площадке на WordPress в ноябре 2020 года. Проблем с «Яндексом» нет. Эта поисковая система видит AMP, но не включает их в индекс.

Google быстро индексирует AMP. Информация о них появилась в разделе Search Console «Вид в поиске – Ускоренные мобильные страницы» в течение нескольких дней после внедрения на сайте.

Практически сразу после индексации Google направляет на AMP трафик. По состоянию на конец февраля 2020 года приблизительно каждый третий посетитель из Google попадает на ускоренную, а не на основную версию страницы. Вот интересная статистика:

  • За неделю с 20 по 26 февраля на тестовую площадку из Google пришло 749 посетителей.
  • 397 из 749 человек — мобильные пользователи.
  • 246 пользователей из Google приземлились на ускоренные страницы.

На примере конкретного ресурса без претензии на репрезентативность видно, что Google охотно направляет на AMP посетителей. На ускоренные страницы из поисковой системы пришли 32,84 % от общего числа пользователей или 62 % мобильных пользователей. Оставшиеся 38 % владельцев смартфонов и планшетов попали на базовые страницы с адаптивной версткой.

Вот данные, на которые стоит обратить внимание:

  • За три месяца с момента реализации посетители ускоренных страниц только один раз нажали на объявление AdSense. На ускоренных страницах висит прямоугольный блок 300 на 250 под основным контентом. Другие форматы объявлений пока не тестировал.
  • Показатель отказов AMP значительно выше, чем у стандартных страниц. По данным Google Analytics он достигает 98 %. Это может быть связано с некорректным отслеживанием эффективности ускоренных страниц сервисом Google Analytics. При переходе пользователя с AMP на обычную страницу система мониторинга засчитывает новое посещение. При этом показатель отказов для ускоренных страниц растет, а глубина сессии уменьшается.
  • Показатель просмотренных за сеанс страниц у посетителей AMP ниже чем у посетителей адаптивных страниц. Пользователи намного реже переходят на другие страницы сайта с помощью блока похожих публикаций, чем посетители обычных страниц.
  • На ускоренные страницы практически все пользователи попадают из поисковой системы Google. За неделю Google Analytics зафиксировала несколько посещений с неопределенным источником трафика.
  • Посетители ускоренных страниц редко переходят на полную версию, несмотря на наличие ссылки в футере. За неделю с 20 по 26 февраля сервис аналитики зафиксировал только 10 переходов.

После реализации AMP скачкообразного изменения трафика из Google не было. Сохранилась динамика умеренного роста посещаемости. На посещаемость из «Яндекса» и других источников ускоренные страницы также не повлияли.

Одного ресурса со средней посещаемостью из Google около 100 уников в сутки недостаточно, чтобы оценивать результаты использования AMP. Поэтому стоит обратиться к чужому опыту. Вот интересные данные:

  • По результатам исследования Google заявил о более высокой эффективности контекстной рекламы на AMP по сравнению с обычными страницами. Показы объявлений в видимой части экрана выросли на 80 %, а CTR рекламных блоков выросли на 90 %.
  • Участники известного русскоязычного форума о поисковых технологиях относятся к AMP преимущественно негативно. Вебмастера не замечают изменений трафика. Некоторые специалисты считают, что Google придумал AMP, чтобы лишить сайты трафика. В данном случае речь идет о возможности просмотра контента ускоренных страниц на странице выдачи.
  • Любопытные данные от Search Engine Watch. Журнал Wired благодаря AMP получил рост CTR ссылок в поисковой выдаче на 25 %. А кликабельность объявлений на ускоренных страницах выросла на 63 %. Ежемесячная посещаемость сайта журнала Slate после внедрения AMP выросла на 44 %.
  • Представители CNN в интервью The Wall Street Journal сказали, что AMP и обычные страницы монетизируются с помощью рекламы одинаково эффективно.

AMP загружаются в разы быстрее обычных. За это приходится жертвовать функциональностью и внешним видом страниц. На тестовой площадке резкого роста трафика после внедрения AMP не произошло. Однако Google направляет каждого третьего посетителя в целом из двух из трех мобильных пользователей на ускоренные, а не стандартные страницы тестового блога.

Отечественные вебмастера считают AMP ненужным капризом Google, а издатели из англоязычного сегмента Сети сообщают о росте посещаемости сайтов и повышении эффективности объявлений. Эта информация поможет вам самостоятельно решить, стоит ли использовать ускоренные мобильные страницы.

Как установить AMP на WordPress

Пользователям WordPress повезло: ускоренные мобильные страницы можно реализовать буквально в течение минуты. Для этого установите и активируйте плагин AMP.

Созданные с помощью плагина страницы проходят проверку в валидаторе AMP.

Плагин AMP не имеет настроек. Чтобы расширить функциональность и улучшить внешний вид ускоренных страниц, воспользуйтесь надстройкой AMP for WP. После установки и активации плагина перейдите в меню настройки ускоренных страниц в административной панели.

В разделе General при необходимости загрузите логотип сайта. Рекомендованный размер изображения — 190×36. С помощью кнопки Custom Logo Size вы можете указать произвольный размер логотипа.

С помощью кнопки Front Page вы можете указать произвольную страницу в качестве главной на AMP-версии сайта.

Обратите внимание на функцию AMP on Pages. Базовый плагин создает только ускоренные версии страниц записей. Если вам необходимы AMP-версии статических страниц, переключите кнопку в положение On.

В разделе Analytics подключите отслеживание посещений AMP с помощью Google Analytics. Для этого укажите Google Analytics ID.

С помощью кнопки Use Google Tag Manager можно подключить Google Analytics с помощью диспетчера тегов Google.

В разделе Design вы можете изменить внешний вид ускоренных страниц. С помощью кнопки Launch Post Builder запустите drag-and-drop редактор дизайна. Добавляйте и удаляйте элементы страницы, выберите цветовую схему, цвет заголовка и фона.

Меню Design Selector позволяет выбрать готовые варианты дизайна. В поле Custom CSS можно добавить пользовательские стили.

В разделе SEO можно настроить отображение на ускоренных страницах метаданных из плагина Yoast SEO, добавить в хедер произвольный HTML-код, а также настроить индексирование страниц архивов и категорий. Если вы не пользуетесь плагином Yoast SEO, оставьте настройки по умолчанию.

В разделе Menu настройте отображение меню на ускоренных страницах сайта. Для этого перейдите по предложенной ссылке.

В разделе Advertisement настройте отображение объявлений AdSense. Плагин предлагает четыре варианта размещения рекламы: над шапкой на всех страницах, под футером на всех страницах, а также над и под контентом на страницах публикаций.

Чтобы разместить объявление под контентом на страницах публикаций, включите кнопку AD #4. Выберите размер объявления. Создайте объявление в аккаунте AdSense и добавьте идентификаторы пользователя и рекламного блока в предложенные поля. Данные возьмите из кода созданного объявления.

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

Блоки рекомендуемого контента приносят доход при переходах посетителей по рекламным ссылкам, а также стимулируют внутренние переходы на сайте. При выборе размера 300×600 блок выглядит так (см. иллюстрацию).

В разделе Single настройте внешний вид и функциональность страницы записи. Вы можете включить прикрепленные к нижней части экрана социальные иконки, ссылки на предыдущую и следующую публикацию, а также настроить блок похожих записей.

В разделе Social Share подключите кнопки шеринга социальных сетей. В разделе Structured Data загрузите изображение для микроразметки ускоренных страниц. Google может использовать его при формировании поисковой выдачи. Также укажите размер изображений, которые будут использоваться в сниппетах при публикации ссылок на ускоренные страницы в социальных сетях.

В разделе Notification можно настроить отображение уведомлений. Например, вы можете сообщить посетителям об использовании cookies. В разделе Translation Panel переведите меню страниц на русский язык.

В разделе Disqus Comments можно подключить на ускоренных страницах систему комментирования Disqus. Для этого переключите кнопку Disqus Comments Support в положение On, укажите URL ресурса в системе Disqus и путь к файлу комментариев на сервере.

Если вы не подключите систему комментирования, на ускоренной странице будет отображаться текст оставленных посетителями базовой страницы комментариев и кнопка «Комментировать». При нажатии на кнопку пользователь будет перенаправлен на основную версию страницы.

В разделе Advance Settings можно включить ускоренную версию главной страницы, а также страниц рубрик и архивов. За эту функцию отвечают кнопки Homepage Support и Archive Page Support соответственно.

С помощью кнопки Non-AMP Homepage link in Header and Logo можно включить ссылку на полную версию главной страницы в названии сайта и логотипе. Используйте эту возможность, чтобы перенаправлять посетителей ускоренных страниц на базовую версию сайта.

Кнопка Mobile Redirection включает автоматическое перенаправление всех мобильных пользователей с адаптивной версии сайта на AMP.

Не перенаправляйте всех пользователей на AMP. В ускоренных страницах нуждаются не все посетители сайта. Редирект вынудит владельцев смартфонов и планшетов пользоваться сокращенными версиями страниц с ограниченной функциональностью. Это может привести к падению эффективности сайта.

Более того, если Google видит только десктопную версию сайта и AMP, для mobile-first индекса он выбирает версию для стационарных ПК. Это может привести к потере трафика из-за отсутствия адаптации ресурса к мобильным устройствам.

Обязательно включите ссылку на полную версию страниц в футере с помощью кнопки Link to Non-AMP in footer. Это поможет пользователям переходить на базовые страницы с нормальной функциональностью.

В разделе Extension можно приобрести и подключить платные надстройки для плагина. Например, вы можете воспользоваться дополнительным инструментом для управления рекламой на ускоренных страницах или добавить на AMP микроразметку «Рейтинг».

В разделе Fix AMP Errors можно подключить платную поддержку. Разработчики плагина помогут разобраться с настройками и избавиться от уведомлений об ошибках в Search Console.

Блок Import/Export позволяет перенести настройки ускоренных страниц с одного сайта на другой.

Итак, на сайтах под управлением WordPress можно реализовать ускоренные страницы в течение нескольких минут. Чуть больше времени вы потратите на настройку внешнего вида и функциональности с помощью плагина AMP for WP.

AMP для Drupal

Чтобы внедрить ускоренные мобильные страницы на сайтах под управлением Drupal, воспользуйтесь следующими инструментами:

Для работы модуля AMP необходимы плагины Token и Chaos Tools. Если вы планируете показывать на ускоренных страницах объявления AdSense, установите расширение Google AdSense Integration.

На странице настроек модуля AMP на вкладке AMP Configuration подключите отображение ускоренных версий для публикаций и страниц. Выберите тему, которая будет использована для создания AMP. Укажите Google Analytics ID для отслеживания посещений страниц. Также вы можете использовать для учета просмотров AMP-пиксель.

На вкладке AMP Metadata укажите название сайта. При необходимости загрузите логотип и выберите его размер.

После настройки проверьте отображение ускоренных версий страниц. Для этого к URL добавьте значение «?amp». Например, ускоренная версия страницы http://primer-saita.ru/node/1 будет доступна по адресу http://primer-saita.ru/node/1?amp.

AMP для Joomla!

Чтобы внедрить ускоренные страницы на сайтах под управлением CMS Joomla!, воспользуйтесь расширением wbAMP. Полная версия этого плагина обойдется вам в 44 доллара США в год. Сборка для сообщества доступна бесплатно.

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

Оставьте дефолтное значение суффикса для URL AMP. В этом случае для просмотра ускоренных страниц достаточно добавить значение amp. Например, ускоренную версию страницы http://primer-saita.ru/koshki можно будет найти по адресу http://primer-saita.ru/koshki/amp.

Также на странице основных настроек укажите информацию о сайте и данные издателя. Выберите подходящий тип микроразметки: NewsArticle для новостных заметок и BlogPosting для публикаций в блоге.

Выберите страницы, для которых необходимо создавать ускоренные версии. Для этого переключитесь на вкладку «Выбрать страницы».

Заполните раздел «Правило для com_content». Если вы планируете показывать ускоренные страницы только для публикаций, в поле «Представление» укажите значение Article. В поле «Категории» выберите категории, публикации в которых будут иметь AMP-версии. В полях ID, ID номер материала и «Задача» укажите значение «*». В этом случае AMP будут созданы для всех публикаций в выбранных категориях.

Другие настройки в бесплатной версии плагина недоступны.

Существует еще один коммерческий инструмент для создания ускоренных страниц на сайтах под управлением Joomla!: плагин JAmp. Он стоит 39 евро. На тестовом сайте плагина можно увидеть, как инструмент трансформирует стандартную страницу в ускоренную.

В отличие от WordPress и Drupal, для Joomla! нет полностью бесплатного инструмента для создания AMP.

AMP для интернет-магазинов

Технология AMP предназначена в первую очередь для контент-проектов: новостных ресурсов, блогов. Стоит ли создавать ускоренные страницы ecommerce-сайтам?

Авторы проекта AMP утверждают, что онлайн-магазины могут и должны использовать ускоренные страницы. Главный аргумент в пользу внедрения технологии на ecommerce-ресурсах — повышение скорости загрузки мобильных страниц положительно влияет на конверсию. Кстати, eBay экспериментирует с AMP с середины 2020 года.

AMP для OpenCart

Чтобы создать ускоренные страницы для сайта под управлением OpenCart, воспользуйтесь модулем Accelerated Mobile Pages. Это платное решение. Тестовую версию ускоренных мобильных страниц, созданных с помощью модуля, можно посмотреть по ссылке.

Также вы можете испытать модуль AMP for Product Pages. Это бесплатное решение. Надстройка создает AMP только для страниц товаров. Для работы AMP for Product Pages нужен модуль SEO Friendly URLS.

Я не могу рекомендовать бесплатный модуль AMP for Product Pages, так как за полтора рабочих дня не смог заставить его работать на тестовом ресурсе. После установки и активации программы на OpenCart версии 2.3.0.2 ускоренные страницы на сайте не появляются. Надстройка добавляет в хедер страниц ссылку на AMP-версию. При переходе по ссылке появляется ошибка 404.

Кроме того, в результате установки модуля сайт периодически становится недоступным, а на экране браузера появляются кракозябры. Работоспособность восстанавливается после удаления и повторной установки модуля.

Возможно, проблема связана с отсутствием реального опыта администрирования сайтов под управлением ОС OpenCart. Пользователи профильного форума отзываются о модуле AMP for Product Pages преимущественно позитивно.

AMP для Magento

Если ваш интернет-магазин работает на платформе Magento, воспользуйтесь платным плагином Accelerated Mobile Pages. Модуль создает AMP для главной, страниц категорий и товаров.

Демонстрационная версия ускоренных страниц сайта на Magento доступна по ссылке.

AMP для PrestaShop

Ускоренные страницы для магазина на платформе PrestaShop можно создать с помощью платного модуля PrestaShop AMP. Он генерирует ускоренные версии главной, страниц категорий и карточек товаров.

Возможности модуля можно оценить на тестовом сайте.

Внедрять или нет

Если у вас контент-проект, который работает на WordPress, реализовать ускоренные страницы можно быстро и без затрат. Вы потратите минуту на установку базового плагина и полчаса на установку и настройку дополнительного плагина.

Для сайтов под управлением Drupal также есть бесплатное решение, которое можно быстро установить и настроить. А вот для Joomla! и движков для интернет-магазинов плагины для создания AMP придется покупать.

Есть ли смысл использовать AMP, если их функциональность и внешний вид уступают стандартным страницам, а явных преимуществ в ранжировании пока нет?

«Яндекс» не поддерживает технологию и иногда неправильно индексирует ускоренные страницы. Google может передумать и закрыть проект.

Но почему-то кажется, что Google не передумает, а «Яндекс» будет вынужден играть по правилам глобального лидера поискового рынка. Логика простая: доля мобильного трафика растет и будет расти. Люди будут выходить в интернет не только с помощью телефонов и часов. На очереди кофеварки и стиральные машины. Поэтому технологии отображения контента на экранах мобильных устройств будут развиваться.

Кстати, несколько лет назад владельцы сайтов скептически относились к необходимости адаптации сайта под мобильный трафик. Сегодня мобильная версия или адаптивная верстка — обязательное условие эффективной работы онлайн-ресурса. Очень вероятно, что в обозримом будущем технология AMP станет одним из базовых условий эффективности сайтов.

Свойства узлов: тип, тег и содержимое

Теперь давайте более внимательно взглянем на DOM-узлы.

В этой главе мы подробнее разберём, что они собой представляют и изучим их основные свойства.

Классы DOM-узлов

Каждый DOM-узел принадлежит соответствующему встроенному классу.

Корнем иерархии является EventTarget, от него наследует Node и остальные DOM-узлы.

На рисунке ниже изображены основные классы:

Существуют следующие классы:

  • EventTarget – это корневой «абстрактный» класс. Объекты этого класса никогда не создаются. Он служит основой, благодаря которой все DOM-узлы поддерживают так называемые «события», о которых мы поговорим позже.
  • Node – также является «абстрактным» классом, и служит основой для DOM-узлов. Он обеспечивает базовую функциональность: parentNode , nextSibling , childNodes и т.д. (это геттеры). Объекты класса Node никогда не создаются. Но есть определённые классы узлов, которые наследуют от него: Text – для текстовых узлов, Element – для узлов-элементов и более экзотический Comment – для узлов-комментариев.
  • Element – это базовый класс для DOM-элементов. Он обеспечивает навигацию на уровне элементов: nextElementSibling , children и методы поиска: getElementsByTagName , querySelector . Браузер поддерживает не только HTML, но также XML и SVG. Класс Element служит базой для следующих классов: SVGElement , XMLElement и HTMLElement .
  • HTMLElement – является базовым классом для всех остальных HTML-элементов. От него наследуют конкретные элементы:
    • HTMLInputElement – класс для тега ,
    • HTMLBodyElement – класс для тега ,
    • HTMLAnchorElement – класс для тега ,
    • …и т.д, каждому тегу соответствует свой класс, который предоставляет определённые свойства и методы.

Таким образом, полный набор свойств и методов данного узла собирается в результате наследования.

Рассмотрим DOM-объект для тега . Он принадлежит классу HTMLInputElement.

Он получает свойства и методы из (в порядке наследования):

  • HTMLInputElement – этот класс предоставляет специфичные для элементов формы свойства,
  • HTMLElement – предоставляет общие для HTML-элементов методы (и геттеры/сеттеры),
  • Element – предоставляет типовые методы элемента,
  • Node – предоставляет общие свойства DOM-узлов,
  • EventTarget – обеспечивает поддержку событий (поговорим о них дальше),
  • …и, наконец, он наследует от Object , поэтому доступны также методы «обычного объекта», такие как hasOwnProperty .
Илон Маск рекомендует:  Что такое код ocinewcollection
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL