Autor | Zpráva | ||
---|---|---|---|
RastyAmateur Profil |
#1 · Zasláno: 6. 1. 2016, 16:00:49
Dobré odpoledne,
nikdy jsem neměl potřebu učit se javascript. Vystačil jsem si s alert() a pár funkcemi z jQuery. Avšak v poslední době mě především díky stránce jecas ten javascript nějak láká. Našel jsem si dokumentaci (konkrétně na stránce devdocs.io, přijde mi téměř dokonalá, krásně se v ní vyznám) a začal jsem řešit i konkrétní problémy, které mě zajímaly. Nedávno jsem tu měl otázku na javu a její tečky. V javascriptu jsem našel uplně to samé. Nyní již vím, že to je jako v php šipka (->). To ještě chápu. Chápu i to, proč a kde se to používá... Ovšem nechápu jednu věc. Narazil jsem na ní, když jsem hledal, jak se pomocí js dá upravit URL adresa v prohlížeči bez obnovení stránky. Našel jsem toto. Jak můžete vidět, používá se tam "window.history.pushState()". A má otázka zní: Proč tam jsou ty tečky (nevím, jak se jim řiká odborně) dvě? Hledal jsem na již zmíněné dokumentaci, ale tam byly metody history.pushState() a window.history jako rozdílné... Děkuji |
||
Chamurappi Profil |
#2 · Zasláno: 6. 1. 2016, 16:05:48
Reaguji na RastyAmateura:
V proměnné window je globální objekt, ten se nemusí uvádět, ale může. Takže history a window.history a window.window.window.window.history jsou totéž…
|
||
RastyAmateur Profil |
Chamurappi:
Aha! Předpokládám, že je více takovýchto proměnných. Naleznu někde jejich seznam? Předpokládám tedy, že window.history.pushState() a history.pushState() je ekvivalentní zápis. Jen taková otázka ještě. Hádám, že odpověď na ní stejně nepochopím. Jak je možné, že se může a nemusí psát? |
||
anonymníí Profil * |
#4 · Zasláno: 6. 1. 2016, 16:44:35
RastyAmateur:
„Jak je možné, že se může a nemusí psát?“ Nebude ti stačit brát to jako fakt? Středník na konci řádku taky můžeš a nemusíš psát. Odborné technické vysvětlení pro to nemám, dokumentaci neznám, ale jsem schopen na to přistoupit jako na fakt. Jen tak mimochodem, u alert u ti ten window objekt nechyběl? :-)
|
||
RastyAmateur Profil |
#5 · Zasláno: 6. 1. 2016, 17:42:40
anonymníí:
No nechyběl no :-) nevybavuji si, že bych někde kdy viděl window.alert(). Ale máš nejspíš pravdu v tom, že nejlepší bude to brát prostě jako fakt :-) Ještě bych se tedy ale zeptal na 2 věci, existuje-li nějaký ten seznam (v případě, že window není jediná proměnná), a zda-li existují funkce/metody, kde to window musí být. děkuji |
||
Chamurappi Profil |
#6 · Zasláno: 6. 1. 2016, 18:05:31
Reaguji na RastyAmateura:
„Předpokládám, že je více takovýchto proměnných. Naleznu někde jejich seznam?“ Z hlavy mě napadají jen window , self a frames . Ve všech je vždy tentýž globální objekt. Může být i v top , pokud stránka není uvnitř rámu.
„Jak je možné, že se může a nemusí psát?“ Nějaký globální objekt být musí. Na příklad metody parseInt a parseFloat jsou i podle specifikace ECMAScriptu (což je standard definující samotný JS, bez návaznosti na prohlížeče) navěšené na globálním objektu. ECMAScript pro ten objekt ale nedefinuje žádný speciální název a obecná univerzální cesta k němu je poněkud nepohodlná.
V prohlížečích je tento globální objekt odjakživa přiřazený do globální proměnné window . Tohle uchopitelnější pojetí je užitečné v případech, kdy se pracuje s více oddělenými stránkami najednou: autor webu může otevírat nová okna (window.open vrací nové window ) a pak i volat funkci z jednoho window v druhém window apod., případně komunikovat mezi rámy. Připomínám, že JavaScript vznikl v Netscape Navigatoru 2.0 v březnu 1996, společně s <frameset> em.
Reaguji na anonymníího: „Odborné technické vysvětlení pro to nemám, dokumentaci neznám, ale jsem schopen na to přistoupit jako na fakt.“ Tak pardon, že jsem to zkusil vysvětlit. Příště budeme brát všechno jako fakt :-) |
||
Časová prodleva: 9 let
|
0