Autor | Zpráva | ||
---|---|---|---|
JSMart Profil * |
#1 · Zasláno: 15. 1. 2013, 14:42:31
Ahoj,
snažil sem se hledat ale ve směsici názoru a nápadů jsem se poněkud ztratil. Tak proto tu zkusím položit otázku těm znalým. Mám v úmyslu udělat velmi jednoduchou "aplikaci" (to slovo je opravdu přehnané - v podstatě takový jakoby katalog pro jednoduché použití). Pro absenci širších znalostí mě napadlo vše udělat v podstatě jako webstránky, kde bude vše bude vše uloženo lokálně (=bez připojení k síti). Můj úmysl je mít jen pár HTML souborů, které budou v závislosti na parametrech v adrese (vpostatě přes GET) zobrazovat různé soubory (typicky obrázky). Tuto funkcionalitu bych teoreticky už zvládnul - pomocí JavaScriptu budu dynamicky upravovat co bude vloženo (např. při zobrazení stranka.html?cislo=001 JS doplním předpřipravenou cestu k souboru a bude zobrazen normálně pomocí HTML tagu <img>). Ale došel jsem k tomu že bych u nějakých souborů potřeboval přidat "klikací mapu", nebo podobně. Má myšlenka by byla: mít ke každému zobrazovanému prvku (např. 001.jpg) mít ještě jeden (např. 001.dat), v kterém by byly souřadnice klikací mapy(+odkazy) které by se měli zobrazit při zobrazení konkrétního prvku. Problém mám právě v tom načtení souboru do nějaké proměnné, abych je mohl pomocí JS vhodně vkládat do HTML. Jako jediné řešení otevření externího souboru jsem zatím našel jeho načtení například do ifamu (<iframe src="001.dat">), který bude mít velikost 0,0 případně bude pomocí CSS zneviditelněn (visibility: hidden ; display: none) a pak z tohoto prvku pomocí JS načíst obsah ifamu=souboru a tento nějak "roztřídit" do potřebných proměnných. (Při studování toho problému jsem narazil na XMLHttpRequest, ... ale popravdě to už bylo nad mé chápání a při zkoušení to moc nefungovalo) Existuje nějaké efektivnější, čistější, nebo správnější řešení? Byl bych rád aby toto fungovalo i na starších strojích, ideálně i např. v nějakém chytřejším mobilu (např. nějaký web-prohlížeč pro Android - nebo aby bylo možné výsledek nakonec nějak pro Android připravit) |
||
peta Profil |
ajax, XMLHttpRequest, mozna jquery je odpoved, kterou hledas.
http://peter-mlich.wz.cz/web/js/prjpw/ajax.html XMLHttpRequest funguje podobne jako iframe. U iframe udelas co? <iframe src=nacti.php?soubor=001.dat> Totez muses udelas se script. <script src=xxx.js></script> <script src=nacti.php?soubor=001.dat></script> - nacti.php ti vygeneruje js kod typu: <script>parent.window.funkce('datadata');</script> - spustis js funkci z hlavniho okna a preds ji string |
||
JSMart Profil * |
#3 · Zasláno: 15. 1. 2013, 23:23:03
Díky za reakci, ale popravdě se mi moc nevyjasnilo, ani na odkazu jsem co bych potřeboval nenašel tak, abych to pochopil. Takže jestli budeš mít chvíli čas, nebo jestli se zapojí někdo další .... napsal sem co umím a co bych potřeboval doladit
<HTML> <HEAD> <META http-equiv="content-type" content="text/html;charset=iso-8859-2"> <TITLE>Prozatím umí přečtení proměnných z adresy - javascriptem</TITLE> </HEAD> <BODY> <H1>Přečtení proměnných z adresy javascriptem</H1> <P>Procedura vyseparuje z části adresy za otazníkem proměnnou a uloží ji do proměnné: </P> <SCRIPT> // <PROCEDURA>, ktera nacte z adresy hodnoty za otaznikem var promenna = window.location.search.substr(1).split("&"); // location.search je ta cast adresy s otaznikem, substr(1) odebere prvni znak (otaznik) // </PROCEDURA> document.write("<BR>Proměnná: " + promenna); // vypise promenne </SCRIPT> <<< Pokud zde není nic, je potřeba <A HREF="?007">přidat do adresy ty proměnnou</A> <MAP NAME="mojemapa"> <AREA HREF="odkaz.html" ALT="Osvětlovací tělesa" SHAPE=RECT COORDS="135,130,245,200"> <!-- tohle bych chtel take nacist ze souboru - prozmenu ze soubuoru [promenna+".dat" --> </MAP> <SCRIPT> // <PROCEDURA>, ktera prida obrazek - pouzije promennou v source document.write("<BR><IMG SRC='" + promenna + ".jpg' USEMAP='#mojemapa'>"); // </PROCEDURA> </SCRIPT> </BODY> </HTML> |
||
Tori Profil |
#4 · Zasláno: 16. 1. 2013, 00:06:18
Taky můžete prostě přidávat externí skripty, které budou obsahovat potřebná data, viz: http://stackoverflow.com/questions/10734968/inject-external-javascript-file-in-html-body-after-page-load
Na rozdíl od Ajaxu s tím nejsou problémy, pokud byste to chtěl spouštět z CDROMu v MSIE. |
||
peta Profil |
JSMart:
Podivej, nevime, jake technologie tam pouzivas. reseni pridani tagu script Pouzivas tam php? Pokud jo, celou vec to usnadnuje, pomoci php muzes z bezneho textoveho souboru vyrobit html kod. 1. Pomoci JS si pak pridas do stranky tag (predpokladam, ze javascriptem umis pridat tag) <script src=nacti.php?soubor=001.dat></script> <?php $kod = "jsfunkce('%s');"; // html kod pro volani funkce s parametrem, %s nahradi sprintf za text $url = $_GET['soubor']; echo sprintf($kod,json_encode(file_get_contents($url))); ?> http://cz1.php.net/manual/en/function.file-get-contents.php - nacti soubor http://cz1.php.net/manual/en/function.json-encode.php - osetri text na zakazane znaky pro js (apostrof ', treba). Pokud php nepouzivas, tak musis musis js kod vyrobit rucne. 1. pridani tagu script pro src=001.dat, <script src=001.dat></script>
2. 001.dat: jsfunkce('mojedata');
Pokud mas v 001.dat pouze mojedata , tak ti to nebude fungovat, protoze <script src=001.dat></script> je pridani externiho js kod a text mojedata neni jskod.
reseni pomoci js xml requestu V prikladu, co jsem odkazal, je js kod, ktery po kliknuti na tlacitko nacte soubor a zobrazi jeho obsah pomoci js XMLHttpRequest. Tez to nevyzaduje to php. Protoze ruzne prohlizece pouzivaji sve obdoby, tak je treba si k samotne funkci pridat dalsi kod. Volani pak provadim <button onclick="ajax.poslatPost('./ajax.html','text=ahoj','zobraz')">Odeslat pozadavek POST</button> './ajax.html' - url 'text=ahoj' - parametr Jedine, co si jeste musis pohlidat, abys mel spravne nastavene ajax.prenosStatus = true; //nebo false V html kodu bys request post vyrobil napr: <form action='./ajax.html' method="post"> <input name="text" value="ahoj"> <input type="submit"> </form> V html kodu bys request get vyrobil napr: <a href='./ajax.html?text=ahoj'>klikni zde</a> |
||
Časová prodleva: 13 let
|
0