Кнопка Google +1 не совместима с W3C
Так что я играл с кнопкой Google +1, пытаясь получить ее на моем сайте, но она не совместима с W3C.
Вот код:
<!-- Place this tag in your head or just before your close body tag -->
<script type="text/javascript" src="http://apis.google.com/js/plusone.js">
{lang: 'en-GB'}
</script>
<!-- Place this tag where you want the +1 button to render -->
<g:plusone size="medium" href="http://www.example.org"></g:plusone>
Кто-нибудь знает, почему это происходит и как сделать это совместимым? Спасибо
РЕДАКТИРОВАТЬ: Чтобы пройти через проверку, я написал статью на моем сайте.
12 ответов
кто-нибудь знает, почему это произошло?
Потому что Google разработал его, чтобы использовать тег суп вместо HTML
Как сделать это совместимым?
В документации есть альтернативная разметка, которая действует в соответствии с черновой спецификацией HTML 5:
<div class="g-plusone" data-size="standard" data-count="true"></div>
Если вы хотите, чтобы он работал с HTML 4.x или XHTML 1.x, вам может не повезти (хотя вы можете добавить несоответствующую разметку с помощью JS, но это будет просто взломать, чтобы скрыть это от валидация и вовсе не в духе действительной разметки)
Вставьте этот код в заголовок:
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
{lang:'en', parsetags:'explicit'}
</script>
Затем вставьте этот код туда, где вы хотите кнопку:
<div id="plusone-div" class="plusone"></div>
<script type="text/javascript">
gapi.plusone.render('plusone-div',{"size": "small", "count": "true"});
</script>
Полный ответ можно найти здесь (на французском)
Я предполагаю, что вы пытаетесь проверить XHTML. Самое близкое, что вы собираетесь сделать, - это успешная проверка правильности путем определения пространства имен "g" для вашего элемента путем добавления этого:
xmlns:g="http://base.google.com/ns/1.0"
т.е.
<html xmlns:g="http://base.google.com/ns/1.0"> ... </html>
Самый простой способ сделать код Google Plus One для проверки: просто введите:
<div class="g-plusone"></div>
Вместо:
<g:plusone size="medium" href="http://www.example.org"></g:plusone>
Недостатки: вы не можете добавить такие параметры, как "count" или "size", иначе код больше не будет действительным.
Это предложенный Google код для HTML5, но он будет работать для других (X) разновидностей HTML. В HTML5 вы МОЖЕТЕ добавить такие параметры, как "data-count", data-size "и т. Д.
Сохраните код, прежде чем закрыть тег body, и замените:
<g:plusone size="medium"></g:plusone>
от:
<div class="g-plusone" id="gplusone"></div>
<script type="text/javascript">
var ValidMe=document.getElementById("gplusone");
ValidMe.setAttribute("data-size","medium");
ValidMe.setAttribute("data-count","true");
</script>
Как обычно, это делает трюк...
Попробуй это:
<div class="g-plusone" data-size="standard" data-count="true"></div>
Это просто
Используйте следующее внутри тега div, который вы можете настроить, чтобы разместить его там, где вы хотите на своей странице, и он действителен.
<div class="g-plusone"></div>
Я использую его на нашем веб-сайте http://www.armaven.com/. Проверьте это. Если ты хочешь.
http://james-ingham.co.uk/posts?p=google-plusone-w3c-valid
<!-- Put inside the <head> tag. -->
<script type="text/javascript"
src="http://apis.google.com/js/plusone.js">
{lang: 'en-GB'}
</script>
<!-- Put where you wish to display button. -->
<script type="text/javascript">
document.write('<g:plusone size="medium" href="http://www.example.org/post"></g:plusone>');
</script>
Это решение, которое я придумал...
<span id="plusone"></span>
<script type="text/javascript">
//< ![CDATA[
$("#plusone").html('<g:plusone></g:plusone>');
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
//]]>
</script>
Убедитесь, что у вас есть <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
или другую ссылку на скрипт jquery в вашем заголовке!
Исходя из ответа Квентина, вы можете добавить W3C-совместимый href
атрибут с помощью data-href
:
<div class="g-plusone" data-size="standard" data-count="true"></div>
Другим способом может быть настройка DTD, как я сделал. Я скачал xhtml1-strict.dtd
Найдите следующее определение сущности в файле dtd
<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc; )*">
И отредактируйте его следующим образом (это поможет разрешить контекстную проверку, т. Е. Где должен появиться этот тег)
<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc; | g:plusone)*">
Теперь определяем новый элемент
<!ELEMENT g:plusone EMPTY>
А потом перечисление атрибутов
<!ATTLIST g:plusone
href %URI; #IMPLIED
size CDATA #IMPLIED
>
Решение, которое я реализовал, уже присутствует в этой теме, и оно было опубликовано Gilbou, но я должен добавить, что <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
не обязательно размещать в шапке.
<div id="plusone-div" class="plusone"></div>
<script type="text/javascript">
gapi.plusone.render('plusone-div',{"size": "medium", "count": "true", "href": "http://www.YOURSITE.com/"});
</script>
Поместите код выше, где вы хотите, чтобы кнопка +1 была, но не забудьте заменить http://www.YOURSITE.com/
со ссылкой на страницу будет +1. Если вы хотите добавить другие параметры в функцию gabi.plusone.render, проверьте https://developers.google.com/+/plugins/+1button/ и посмотрите, совместим ли он с W3C, перейдите по http://validator.w3.org/. Удачи!