15.01.2013, 10:34
|
Аспирант
|
|
Регистрация: 09.04.2012
Сообщений: 65
|
|
Странная проблема с валидотором и JavaScript
Делаю плагин кнопок социальных сетей для одной CMS'ки, с динамической подгрузкой самих кнопок в зависимости от местонахождения на сайте, и наткнулся на проблему с валидатором. Сам сайт полностью валидный, и код я писал тоже валидный, но валидатор почему-то не считает мой труд оправданным.
А именно, есть код на JS:
<span class="knopka">
<span onClick="showhide('share_span');" style="cursor: pointer;">Поделиться</span>
<span id="share_span" style="display: none;"></span>
</span>
<script type="text/javascript">
obj('share_span').innerHTML=
' <span class="yashare-auto-init" data-yashareL10n="ru" data-yashareType="none"'+
' data-yashareQuickServices="vkontakte,facebook,twitter,odnoklassniki,moimir,lj,gplus"></span>';
</script>
Валидатор выдает мне не совсем понятный результат:
http://javascript.ru/forum/attachmen...d=135823144 6
Я понимаю, что означает эта ошибка, но почему она возникает на JS строке? Валидатору интересно, что я передаю с помощью JS, это понятно, но где он нашел ошибку? Я найти не могу. Может просто глаза замылены уже.
PS: showhide() - функция скрытия объекта, если он виден, и показа, если скрыт.
obj() - обращение к DOM объекта. Использую яндекс API для реализации, однако туплю жестко не могу понять, что не так... Нужна помощь!
|
|
15.01.2013, 12:35
|
Аспирант
|
|
Регистрация: 09.04.2012
Сообщений: 65
|
|
Неужели никто не сталкивался с подобной проблемой?
|
|
15.01.2013, 13:20
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Викториан, как вариант, напиши все в одну строку...
<script type="text/javascript">
obj('share_span').innerHTML='<span class="yashare-auto-init" data-yashareL10n="ru" data-yashareType="none" data-yashareQuickServices="vkontakte,facebook,twitter,odnoklassniki,moimir,lj,gplus"></span>';
</script>
|
|
15.01.2013, 19:36
|
Аспирант
|
|
Регистрация: 09.04.2012
Сообщений: 65
|
|
Я писал в одну, но та же самая фигня, ошибка. Писал просто '<span></span>'; и все равно выдавало, что тег не открыт... Не понимаю что не так.
|
|
15.01.2013, 19:54
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
<span class="knopka">
<span onClick="showhide('share_span');" style="cursor: pointer;">Поделиться</span>
<span id="share_span" style="display: none;"></span>
</span>
<script type="text/javascript">
obj("share_span").innerHTML="<span class=\"yashare-auto-init\" data-yashareL10n=\"ru\" data-yashareType=\"none\"\
data-yashareQuickServices=\"vkontakte,facebook,twitter,odnoklassniki,moimir,lj,gplus\"></span>";
</script>
|
|
15.01.2013, 19:56
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
А кто сказал, что валидаторы всегда правильно отслеживают ошибку и место ошибки?
Последний раз редактировалось dmitriymar, 15.01.2013 в 19:58.
|
|
15.01.2013, 20:26
|
Аспирант
|
|
Регистрация: 09.04.2012
Сообщений: 65
|
|
Сообщение от dmitriymar
|
А кто сказал, что валидаторы всегда правильно отслеживают ошибку и место ошибки?
|
Я не спорю, но проверять не будут при помощи программиста, а при помощи валидатора. Человвек, которому я делаю плагин не возьмет, если валидатор будет ругаться. А если валидатор пишет, что ошибка, человеку, далекому от программирования все равно не получится объяснить, что по логике все правильно.
|
|
15.01.2013, 20:29
|
Аспирант
|
|
Регистрация: 09.04.2012
Сообщений: 65
|
|
Сообщение от Deff
|
<span class="knopka">
<span onClick="showhide('share_span');" style="cursor: pointer;">Поделиться</span>
<span id="share_span" style="display: none;"></span>
</span>
<script type="text/javascript">
obj("share_span").innerHTML="<span class=\"yashare-auto-init\" data-yashareL10n=\"ru\" data-yashareType=\"none\"\
data-yashareQuickServices=\"vkontakte,facebook,twitter,odnoklassniki,moimir,lj,gplus\"></span>";
</script>
|
Line 101, Column 96: end tag for element "SPAN" which is not open
…Services=\"vkontakte,facebook,twitter,odnoklassniki,moimir,lj,gplus\"></span>";
✉
The Validator found an end tag for the above element, but that element is not currently open. This is often caused by a leftover end tag from an element that was removed during editing, or by an implicitly closed element (if you have an error related to an element being used where it is not allowed, this is almost certainly the case). In the latter case this error will disappear as soon as you fix the original problem.
If this error occurred in a script section of your document, you should probably read this FAQ entry.
|
|
15.01.2013, 20:32
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
<span class="knopka">
<span onClick="showhide('share_span');" style="cursor: pointer;">Поделиться</span>
<span id="share_span" style="display: none;"></span>
</span>
<script type="text/javascript">
var a="<span class=\"yashare-auto-init\" data-yashareL10n=\"ru\" data-yashareType=\"none\" data-yashareQuickServices=\"vkontakte,facebook,twitter,odnoklassniki,moimir,lj,gplus\"></span>";
obj("share_span").innerHTML=a.toString();
</script>
Последний раз редактировалось Deff, 15.01.2013 в 20:47.
|
|
15.01.2013, 20:44
|
Аспирант
|
|
Регистрация: 09.04.2012
Сообщений: 65
|
|
При таком варианте ошибки нет, но вместо кнопок выводится простой текст. Так как угловые скобки теперь стали лишь мнемониками (наверное). Я уже множество вариантов перепробовал, и через PHP, и через JS, если использовать не JS, то выдает три ошибки, так как элементы содержат недопустимые атрибуты. Муть какая-то получается. Сейчас пытаюсь написать свой компонент для "социальных кнопок".
|
|
|
|