Валидация кнопок Twitter и Google Plus

Можно ли сделать так, чтобы страницы с кнопками социальных сетей проходили w3c-валидацию? Как оказалось – можно!

1-й способ

Как не странно, но данный способ заключается в отказе от xhtml в пользу html5. Последний, еще не завершенный, стандарт языка html позволяет использовать любые параметры размещаемых элементов. Поэтому все кнопки социальных сетей будут проходить валидацию. Но! При этом мы будем получать предупреждение об использовании html5, который все еще находиться в режиме формирования и наполнения.

Способ рабочий, но ведь не для этого мы затевали весь сыр-бор?

2-й способ

Данный способ работает только для кнопок twitter. И заключается он в передаче параметров в самом адресе кнопки.

К примеру, был следующий код:

<a href="https://twitter.com/share" class="twitter-share-button" data-via="Juev" data-lang="en" data-count="none">Tweet</a>

В данном примере используются параметры data-via, data-lang и data-count. Именно они не позволят проходить валидацию страницы. Переместим данные параметры в адрес и получим следующий код:

<a href="https://twitter.com/share?lang=en&amp;count=none&amp;via=Juev" class="twitter-share-button">Tweet</a>

И строка теперь стала короче и все необходимые параметры переданы и при этом страница теперь проходит валидацию. Единственно, сделать нечто подобное с кнопкой google plus не удается, так как там не используется в явном виде адрес страницы.

3-й способ

Данный способ универсальный и использует javascript. Естественно, что если у пользователя js отключен, то и кнопки он не увидит.

На странице в нужном месте располагаем элемент div с заданным id:

<div id="gplusone"></div>

После чего в коде javascript задаем следующее:

var campisi = document.createElement('g:plusone'); 
campisi.setAttribute("align","left");
campisi.setAttribute("size","medium");
campisi.setAttribute("annotation","none");
document.getElementById("gplusone").appendChild(campisi);

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

<script type="text/javascript"></script>

Аналогичным же образом задаются параметры у кнопки twitter.

Таким образом есть несколько вариантов решения проблемы с валидацией страниц, на которых размещаются кнопки социальных сетей. Выбирайте любой!