Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   запихнуть код js в тэг html (https://javascript.ru/forum/misc/42712-zapikhnut-kod-js-v-tehg-html.html)

Giku 06.11.2013 17:18

запихнуть код js в тэг html
 
адинистрирую сайт черер кмс
есть код
<script language="JavaScript" type="text/javascript">
var objtext = document.getElementById('textinfo'); 
var objlink = document.getElementById('link');

function more(flag){
if (flag==1){
objtext .innerHTML =' много текста ';
objlink.innerHTML ='<< Скрыть';   
document.getElementById('link').onclick=function(){ more(2);}
}

else {
objtext .innerHTML =' мало текста';
objlink.innerHTML ='Читать Далее >>';   
document.getElementById('link').onclick=function(){ more(1);}
}


}
</script>


но если пишу его так то между тэгами <script> появляется какая то бойда и код не работает
<script language="JavaScript" type="text/javascript">// <![CDATA[
тут мой код
// ]]></script>


зато работает вот так

<a onclick="javascript: и тут вписать нужный код" id="link">
что нужно вписать туда чтобы не обращаться к внешнему коду js что бы при первом нажатии открывался текст и менялась надпись на '<< Скрыть' а при повторном нажатии сменить надпись ссылки на 'Читать Далее >>' и убрать часть текста

Faab 06.11.2013 17:45

Цитата:

Сообщение от Giku (Сообщение 279833)
если пишу его так то между тэгами <script> появляется какая то бойда и код не работает

// ]]>
</script>

Giku 06.11.2013 17:58

сделал две ссылки
'Читать Далее >>'
'<< Скрыть'

каждая срывает себя и показывает другую, ну и уже все нужные функции

Faab 06.11.2013 18:12

а скрипт в <script></script> так и не заработал?

Giku 06.11.2013 20:08

между тэгами появляется вот это
// <![CDATA[
тут мой код
// ]]>

вставляется автоматически (видимо какая то защита)

Faab 06.11.2013 20:13

CMS что ли?

danik.js 06.11.2013 21:43

Цитата:

Сообщение от Giku
// <![CDATA[
тут мой код
// ]]>

И что? Это же всего лишь javascript-комментарии? Не слыхал чтобы комментарии влияли на работоспособность кода :)))

alert('работает!');


и
// <![CDATA[
alert('тоже работает!');
// ]]>

Faab 06.11.2013 21:49

Да, но откуда эти комментарии? Я думал (и думаю) их генерирует CMS. Если это CMS, то значит скрипт просто подключается не по правилам CMS.

BETEPAH 06.11.2013 23:35

Цитата:

Сообщение от Faab
Да, но откуда эти комментарии? Я думал (и думаю) их генерирует CMS

И пусть себе генерирует, он же не мешает :)
Видимо, ЦМС древняя, ей никто не рассказал, что уже давно не надо вокруг скрипта такие обертки делать.
Раньше они были нужны, чтоб браузеры, которые не понимают скрипты (всякие Нетскейп Навигатор и прочие древности), не показывали его наружности людям.

Текст помещенный внутри CDATA не парсится и воспринимается как обычная строка. Это позволяет всунуть внутрь тега что угодно (в том числе любой код) и при этом быть уверенным, что парсер не упадет от невалидного кода.

Два слеша ставятся чтобы строку "<![CDATA[" и "]]>" сделать комментарием (при этом эта строка остается валидной с точки зрения парсера), т.к. без слешей это ошибка синтаксиса JavaScript.

danik.js 07.11.2013 00:08

Цитата:

Сообщение от BETEPAH
Текст помещенный внутри CDATA не парсится и воспринимается как обычная строка.

Только при разборе XML-парсером. HTML-парсер и знать не знает ни про какие CDATA-секции.

Эти комменты не спасут от отображения древними браузерами. Для этого нужно использовать HTML-комментарии:
<script>
<!--
 doSomething();
// -->
</script>


Обертка же из CDATA позволяет использовать скрипты в XHTML-документах (которые, как правило, никто не использует), чтобы XML-парсер игнорировал тело скрипта.


Часовой пояс GMT +3, время: 11:24.