Подтвердить что ты не робот

Кнопка 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="#" onclick="location.href='http://www.example.org'; return false;"></g:plusone>

Кто-нибудь знает, почему это происходит и как это сделать? Благодаря

EDIT: чтобы пройти эту проверку, я написал статью на веб-сайте.

4b9b3361

Ответ 1

Кто-нибудь знает, почему это происходит?

Поскольку Google разработал его, чтобы использовать суп с тегами вместо HTML

Как сделать это совместимым?

Документация имеет альтернативную разметку, которая действительна в соответствии с черновикой спецификации HTML 5:

<div class="g-plusone" data-size="standard" data-count="true"></div>

Если вы хотите, чтобы он работал с HTML 4.x или XHTML 1.x, вам может быть не повезло (хотя вы могли бы добавить несовместимую разметку с помощью JS, но это было бы просто взломать скрыть его от проверки и вовсе не в духе действительной разметки)

Ответ 2

Вставьте этот код в заголовок:

<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>

Полный ответ можно найти здесь (на французском языке)

Ответ 3

Я предполагаю, что вы пытаетесь проверить XHTML. Самое близкое, что вы собираетесь сделать, это успешно проверить, это определить пространство имен g для вашего элемента, добавив следующее:

xmlns:g="http://base.google.com/ns/1.0"

то есть.,

<html xmlns:g="http://base.google.com/ns/1.0"> ... </html>

Ответ 4

Самый простой способ сделать код Google Plus One для проверки: Просто поставьте:

<div class="g-plusone"></div>

Вместо:

<g:plusone size="medium" href="http://www.example.org"></g:plusone>

Недостатки: вы не можете добавлять такие параметры, как "счет" или "размер", иначе код больше не будет действителен.

Он предложил Google код для HTML5, но будет работать и для других (X) HTML-вкусов. В HTML5 вы можете добавлять такие параметры, как "data-count", data-size 'и т.д.

Ответ 5

Попробуйте следующее:

<div class="g-plusone" data-size="standard" data-count="true"></div>

Ответ 6

Сохраните код перед закрытием тега 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>

Как обычно, он делает трюк...

Ответ 7

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>

Ответ 8

простое

Используйте тег div, который вы можете настроить, чтобы разместить его там, где хотите на своей странице, и он действителен.

<div class="g-plusone"></div>

Я использую его на нашем веб-сайте www.armaven.com. Проверьте это. Если ты хочешь.

Ответ 9

Другим способом может быть настройка 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
>

Ответ 10

Это решение, которое я придумал...

<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 script в вашем заголовке!

Ответ 11

Реализованное решение уже присутствует в этом потоке, и оно было опубликовано 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/#plusonetag-parameters и посмотрите, совместим ли это W3C с файлом http://validator.w3.org/. Удачи!

Ответ 12

После ответа Quentin вы можете добавить атрибут href, совместимый с W3C, с помощью data-href:

<div class="g-plusone" data-size="standard" data-count="true"></div>