Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ошибки в коде Яндекса
 
 автор: Владимир55   (12.12.2011 в 18:51)   письмо автору
35.1 Кб
 
 

В Яндексе имеется код блока "Поделиться". http://api.yandex.ru/share/

Код вот такой:
<script type="text/javascript" src="//yandex.st/share/share.js" charset="utf-8"></script> <div class="yashare-auto-init" data-yashareL10n="ru" data-yashareType="icon" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir"></div> 


И валидатор находит в этом коде три однотипных ошибки в одной строке (Приложение).

Как бы их исправить?

(На странице остались только эти ошибки, а потому хочется от них отделаться).

  Ответить  
 
 автор: cheops   (12.12.2011 в 19:12)   письмо автору
 
   для: Владимир55   (12.12.2011 в 18:51)
 

А никак - это так называемые собственные атрибуты, довольно распространенный прием, когда вводятся атрибуты, который браузеры игнорируют, но использует JavaScript-код. Обычно, там где-то рядом должен лежать вариант, специально разработанный для того, чтобы код оставался валидным (для разных DOCTYPE-пов).

  Ответить  
 
 автор: АЯС   (12.12.2011 в 19:20)   письмо автору
 
   для: Владимир55   (12.12.2011 в 18:51)
 

У всякого тега существует определённый конечный набор стандартных атрибутов - для каждого тега они перечислены в спецификации W3C.

Изобретать свои собственные "нестандартные" атрибуты разрешается Javascript'ом, но НЕ разрешается спецификацией W3C.

Так что, если уберёте все эти "нестандартные" атрибуты (data-yashareL10n, data-yashareType, data-yashareQuickServices), то пройдёте валидацию. Но тогда не будет работать Javascript.
И - наоборот, если оставите эти атрибуты - по-любому не пройдёте валидацию. Зато всё будет работать.

Так что... не "отделаетесь" :-)

  Ответить  
 
 автор: AlexSol   (12.12.2011 в 20:02)   письмо автору
 
   для: Владимир55   (12.12.2011 в 18:51)
 

выведите div через js

document.write('...')

  Ответить  
 
 автор: Владимир55   (13.12.2011 в 17:00)   письмо автору
 
   для: AlexSol   (12.12.2011 в 20:02)
 

Если имеется в виду так:

    <script language="javascript" type="text/javascript"> 
    document.write('<div class="yashare-auto-init" data-yashareL10n="ru" data-yashareType="none" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir,lj,friendfeed,moikrug"></div>')
    </script> 


то остаются те же три ошибки, плюс к ним добавляется четвертая "document type does not allow element "div" here ", относящаяся к промежутку перед </div>.

  Ответить  
 
 автор: elenaki   (13.12.2011 в 18:05)   письмо автору
 
   для: Владимир55   (13.12.2011 в 17:00)
 

<script language="javascript" type="text/javascript">  
    document.write('<div class="yashare-auto-init" data-yashareL10n="ru" data-yashareType="none" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir,lj,friendfeed,moikrug"></"+"div>') 
    </script>

  Ответить  
 
 автор: Владимир55   (13.12.2011 в 18:48)   письмо автору
 
   для: elenaki   (13.12.2011 в 18:05)
 

При сохранении прежних, ошибок стало еще больше. Добавилось:
document type does not allow element "div" here 
character "<" is the first character of a delimiter but occurred as data 
 end tag for "div" omitted, but OMITTAG NO was specified 
 start tag was here 

  Ответить  
 
 автор: AlexSol   (13.12.2011 в 19:32)   письмо автору
 
   для: Владимир55   (13.12.2011 в 18:48)
 


ocument.write('&lt;div class="yashare-auto-init" data-yashareL10n="ru" data-yashareType="none" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir,lj,friendfeed,moikrug">&lt;/div>') 

  Ответить  
 
 автор: АЯС   (13.12.2011 в 23:57)   письмо автору
 
   для: Владимир55   (13.12.2011 в 18:48)
 

Всё, что написано внутри круглых скобок метода write () - должно быть написано В ОДНУ СТРОКУ, БЕЗ ПЕРЕНОСОВ.

  Ответить  
 
 автор: Владимир55   (14.12.2011 в 01:06)   письмо автору
9.4 Кб
 
   для: АЯС   (13.12.2011 в 23:57)
 

В одну строку написал, буквально так:

    <script language="javascript" type="text/javascript">  
    document.write('&lt;div class="yashare-auto-init" data-yashareL10n="ru" data-yashareType="none" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir,lj,friendfeed,moikrug">&lt;/div>')  
    </script>


А результат - в скриншоте.

  Ответить  
 
 автор: АЯС   (14.12.2011 в 01:31)   письмо автору
 
   для: Владимир55   (14.12.2011 в 01:06)
 

Надо:
1) В одну строку
2) И именно с символами < и > в явном виде, а не со спецсимволами &lt; и &gt;

  Ответить  
 
 автор: Владимир55   (14.12.2011 в 09:16)   письмо автору
 
   для: АЯС   (14.12.2011 в 01:31)
 

Это уже было - предлагала elenaki (13.12.2011 в 18:05)
Результат Владимир55 (13.12.2011 в 18:48)

Код в одну строку. Это он на форуме изображается таким образом, а написан в одну строку.

Я вот думаю: может, через Аякс?

  Ответить  
 
 автор: АЯС   (14.12.2011 в 09:57)   письмо автору
 
   для: Владимир55   (14.12.2011 в 09:16)
 

Зачем AJAX? Вполне можно просто через внешний скрипт.

  Ответить  
 
 автор: Владимир55   (14.12.2011 в 10:05)   письмо автору
 
   для: АЯС   (14.12.2011 в 09:57)
 

А может быть и так. Но вот ведь не получается...

  Ответить  
 
 автор: elenaki   (14.12.2011 в 10:54)   письмо автору
 
   для: Владимир55   (14.12.2011 в 09:16)
 

извините,я ошиблась. там должны быть одинарные кавычки, между <\ и div>.
<script language="javascript" type="text/javascript">   
    document.write('<div class="yashare-auto-init" data-yashareL10n="ru" data-yashareType="none" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir,lj,friendfeed,moikrug"></'+'div>')  
    </script> 

  Ответить  
 
 автор: Владимир55   (14.12.2011 в 12:59)   письмо автору
 
   для: elenaki   (14.12.2011 в 10:54)
 

Всё тоже самое... Плюс дополнительные ошибки.

Интересно, а если, для пробы, разместить этот форагмент на Вашем сайте, то там нормально?

  Ответить  
 
 автор: elenaki   (14.12.2011 в 13:29)   письмо автору
 
   для: Владимир55   (14.12.2011 в 12:59)
 

мне валидатор на ваш код ошибок не выдает (http://validator.w3.org/?)

  Ответить  
 
 автор: Владимир55   (14.12.2011 в 13:35)   письмо автору
 
   для: elenaki   (14.12.2011 в 13:29)
 

Мистика!

Я им и проверяю. Сейчас ещё раз попробовал - ошибки те же.

А на тестовой странице у Вас какой DOCTYPE ?

У меня вот что:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

  Ответить  
 
 автор: nikita2206   (14.12.2011 в 14:46)   письмо автору
 
   для: Владимир55   (14.12.2011 в 13:35)
 

да вы что ребята! неужели никто не может ответить нормально?!
теперь в гугле пишем "html5 data attribute"
если разжевывать - "data-*" атрибуты появились в html5 уже по w3c. если хочешь валидности - придется менять доктайп на хтмл5

  Ответить  
 
 автор: mmazay   (17.01.2012 в 20:19)
 
   для: Владимир55   (12.12.2011 в 18:51)
 

Можно сделать так -

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "урл_сами_знаете_какой/TR/xhtml1/DTD/xhtml1-transitional.dtd"
[
<!ATTLIST div data-yashareL10n CDATA #IMPLIED>
<!ATTLIST div data-yashareType CDATA #IMPLIED>
<!ATTLIST div data-yashareQuickServices CDATA #IMPLIED>
]>

К сожалению, при этом в верху страницы появляются неубиваемые символы ]>
Но валидацию проходит :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования