Autor Zpráva
JSMart
Profil *
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>
Nebo tam udelas formular, formular odesles, iframe se obnovi, spusti javascript a ten prepise neco v hlavnim okne.
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 *
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>
    &lt;&lt;&lt; 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
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>
2. Php kod nacte soubor a vyrobi js kod (nacti.php).
<?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)));
?>
A to je cely.
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
'zobraz' - funkce, ktera prevezme data z requestu
Jedine, co si jeste musis pohlidat, abys mel spravne nastavene
ajax.prenosStatus = true; //nebo false
Bud to funguje s true nebo s false. Ten muj priklad by mel fungovat z webu, po kliknuti na tlacitko by mel zobrazit obsah toho sameho souboru.

V html kodu bys request post vyrobil napr:
<form action='./ajax.html' method="post">
<input name="text" value="ahoj">
<input type="submit">
</form>
Kliknul bys na tlacitko a stranka by se obnovila. Navratovou funkci tu zastupuje obnoveni cele stranky.

V html kodu bys request get vyrobil napr:
<a href='./ajax.html?text=ahoj'>klikni zde</a>
Kliknul bys na odkaz a stranka by se obnovila. Navratovou funkci tu zastupuje obnoveni cele stranky.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: