Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Тэг <script> - src и код одновременно? (https://javascript.ru/forum/misc/19194-tehg-script-src-i-kod-odnovremenno.html)

klimashkin 28.07.2011 15:16

Тэг <script> - src и код одновременно?
 
Смотрю на генератор кнопки + от Google:
http://www.google.com/webmasters/+1/button/

Если выбрать какой-нибудь язык отличный от английского, то гугл генерит следующий текст:
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
  {lang: 'ru'}
</script>


Что это значит, ведь по канонам это бессмысленно?

ваый 28.07.2011 15:46

ну валидацию, да, не пройдет.
но с другой стороны удобно. браузер просто проигнорирует внутреннюю вставку, в то время как скрипт plusone.js может получить нужные параметры {lang: 'ru', ...} и использовать их для своих нужд.

monolithed 28.07.2011 16:37

Цитата:

Сообщение от ваый
использовать их для своих нужд

как?

e1f 28.07.2011 16:39

Цитата:

Сообщение от monolithed (Сообщение 115854)
как?

innerHTML

ваый 28.07.2011 16:47

Цитата:

Сообщение от e1f (Сообщение 115855)
innerHTML

именно

monolithed 28.07.2011 17:23

e1f, ваый,
Очевидно, но это же полнейшая тупость, когда есть масса нормальных способов (назначить идентификатор, атрибут и пр.).
Не понимаю, для чего такие сложности ? ;)

ваый 28.07.2011 17:28

Ну это нужно у инженеров гугл спрашивать. А мне кажется, что это довольно удобный способ для задания конфигурационных параметров. А что, получить строку с параметрами {lang: 'ru'} проще простого, преобразовать в объект, еще проще. Это лучше, чем передавать параметры в атрибуте src.
monolithed, а как тебе кажется лучше было бы?

melky 28.07.2011 17:30

как получить этот innerHTML из скрипта ?прошу пример ,ваый !

мне кажется, что так.
var a = document.getElementsByTagName('script'), 
	b = a.length,
	options = {};

while( b-- ) 
	if ( ~a[i].src.indexOf("plusone.js") ) 
		options = JSON.parse (  a[i].innerHTML );

alert( options.lang ); // ru ?

ваый 28.07.2011 17:36

melky, можно изящнее.
Полагаю как-то так должно прокатить:
var scripts = document.getElementsByTagName('script');
var thisScript = scripts[scripts.length - 1];
var params = eval('(' + thisScript.innerHTML + ')');
Этот код располагается внутри самого скрипта, который загрузился. Здесь учитывается, что этот самый скрипт на момент загрузки будет самым последним из всех скриптов.

monolithed 28.07.2011 17:56

ваый,

можете не согласиться, однако:

1. наличие кода внутри дескрипторов script с атрибутом src
2. такой способ получения и обработки данных
3. предположение, что этот дескриптор будет последним в документе.

признак быдлокодерства.

Цитата:

Сообщение от ваый
а как тебе кажется лучше было бы?

1. у Google имеется JS API для подключения библиотек:
//заполнено образно
google.load("plusone", {lang : 'ru'});
gapi.plusone.render("plusone", {lang : 'ru'});

2. есть вариант с пространствами имен:
<script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
<g:plusone></g:plusone>


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