Script i src, i kod pomiędzy tagami, JSON

0

Witam, oglądnąłem sobie źródło pewnej strony:
http://www.alittlebitofsomething.co.uk/

I zaciekawił mnie taki urywek:

<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
  {lang: 'en-GB'}
</script>

Chodzi o to co jest w postaci JSON : {lang: 'en-GB'} pomiędzy tagami script. Jak to działa, jak google niby pobiera dane z zmiennej lang? Przecież jak jest atrybut src, to kod pomiędzy tych tagów się nie wykonuję.

0

heh, pisałem już na wykopie, że ten koleś nie zna javascriptu :D

Skoro już rozmawiamy o znaczniku script to dorzucę swoje 3 grosze. W html5 można nie pisać atrybutu "type", ale nie rozumiem dlaczego nikt nie pomyślał o tym, żeby można było pisać:
<script src="skrypt.js" />zamiast:
<script src="skrypt.js"></script>

0

Bo HTML to chory twór. Niektóre tagi muszą mieć body, niektóre nie, niektórych nie wolno zamykać, niektóre muszą zostać zamknięte... XHTML miał to wszystko przynajmniej ustandaryzowane, ale to martwy format.

0
  1. {lang: 'en-GB'} to nie jest JSON
  2. w window.__GOOGLEAPIS.gwidget jest tworzony objekt lang i tam jest przypisana jego wartosc, czyli 'en-GB'. Jak zmienisz to na {lang2: 'juhu', lang3: 'nana'} to zostanie w gwidget odpowiednio utworzone objekty lang2 i lang3
  3. jak to jest robione? daje na to (tak 90%), ze ktorys ze skryptow analizuje zawartosc miedzy tymi tagami. Zawartosc jest przerabiana przez eval(). W wyniku powstaje objekt, ktorego wlasciwosci dzieki reflection mozna przypisac do __GOOGLEAPIS.gwidget. Np:
var obj = eval('zwartosc miedzy tagami script');
for(prop in obj){
   __GOOGLEAPIS.gwidget[prop]=obj[prop];
}
0

A myślałem po prostu, że to jakiś trick, o którym nie wiedziałem... czyli nic nowego się nie dowiedziałem o JS.

A co do

  1. {lang: 'en-GB'} to nie jest JSON

Jeśli to nie format JSON to co?

0

JSON jest tu opisany:
http://www.json.org/
i przyjmuje format: {"string":value [, itp...] }

a {lang: 'en-GB'} jest zwyklym objektem (nie odpowiada formatowi zapisu jaki ma JSON).

var obj = {lang: 'en-GB'};

jest ekwiwalentne do

var obj =  new Object();
obj.lang =  'en-GB';

1 użytkowników online, w tym zalogowanych: 0, gości: 1