Autor | Zpráva | ||
---|---|---|---|
JJ Profil * |
#1 · Zasláno: 31. 1. 2011, 23:25:21
Zdravím,
mám toto: <?php $text = File ("text.txt");?> $text[0] = "<span class=\'trida\'>slovo</span>" Javascript, kterým zobrazuji text pod obrázkovou mapou: function writeText(txt) { document.getElementById("desc").innerHTML=txt; } Část obrázkové mapy: <area onMouseOver="writeText('<table><tr><td><?php echo $text[0];?></td></tr></table>')" onMouseOut="writeText('')" shape="poly" title="něco" alt="něco" href="#" coords="78,224,312,234,376,233,376,235,612,244,612,197,78,198"> Problém: Při načtení stránky je správně zdroják: <area onMouseOver="writeText('<table><tr><td><span class=\'trida\'>slovo</span></td></tr></table>')" onMouseOut="writeText('')" shape="poly" title="něco" alt="něco" href="#" coords="78,224,312,234,376,233,376,235,612,244,612,197,78,198"> ale javascript nefunguje. Ale, když toto: <span class=\'trida\'> <?php echo $text[0];?> Výsledný zdroják stránky je v obou případech stejný, ale s PHP nešlape :-( |
||
Radek9 Profil |
#2 · Zasláno: 1. 2. 2011, 08:50:53 · Upravil/a: Radek9
…</table>')" onMouseOut… |
||
JJ Profil * |
#3 · Zasláno: 1. 2. 2011, 09:46:55
Nevím jestli to dobře chápu, ale pokusil jsem se to přepsat takto:
<area onMouseOver="writeText('<table><tr ><td><?php echo $text[0];?></td></tr></table>')" onMouseOut="writeText('')" shape="poly" title="neco" alt="neco" href="#" coords="78,224,312,234,376,233,376,235,612,244,612,197,78,198"> a stejně nešlape. Předpokládám, že chyba je mezi židlí a klávesnicí... |
||
Radek9 Profil |
#4 · Zasláno: 1. 2. 2011, 09:48:42 · Upravil/a: Radek9
JJ:
Ne. V tom první kódu máš >, ale má tam být entita. A proč to nahrazuješ i v PHP kodu? Co to má za smysl? |
||
Chamurappi Profil |
#5 · Zasláno: 1. 2. 2011, 10:09:42
Upozorňuji, že za zobrazení entit v atributech zdejšího kódu může fórum (konkrétně JUSH) — kdo si vypne barvení (nahoře v menu), uvidí, jak to JJ doopravdy napsal.
Reaguji na JJ: Prosím o odkaz na živou ukázku. Reaguji na Radka9: Uvnitř hodnoty atributu uzavřeného uvozovky smí (prakticky) být cokoliv vyjma uvozovek. |
||
JJ Profil * |
#6 · Zasláno: 1. 2. 2011, 10:11:44
To byl jen už jen zoufalý pokus. Vše funguje ať už se znaky <> nebo s entitami, ale jen do chvíle, než do toho vložím
<?php echo $text[0];?> |
||
Radek9 Profil |
#7 · Zasláno: 1. 2. 2011, 10:29:14
Chamurappi:
Aha, tak to se omlouvám. Já jsem s těmy tagy v atributech měl párkrát problémy, takže jsem byl přesvědčen, že tam mají být entity. |
||
JJ Profil * |
#8 · Zasláno: 1. 2. 2011, 10:43:17
Mám to v rozpracovaném projektu. Připravím to do jedné stránky a hodím odkaz.
|
||
JJ Profil * |
#9 · Zasláno: 1. 2. 2011, 14:30:45
Na začátek: ukázku připravuji, ale mezitím jsem zjistil v čem je problém.
Mám soubor *.txt a v něm toto: <span class=\'pi33\'>A1</span> <span class=\'pi33\'>B1</span> <span class=\'pi33\'>C1</span> Do stránky je načten: <?php $text = File ("imagemaps/text.txt"); ?> Hodnoty - tedy co řádek, to hodnota vypisuji do stránky takto: <?php echo $text[0];?> <?php echo $text[1];?> <?php echo $text[3];?> Problém je v tom, že pokud je v souboru text.txt více jak jeden řádek, tak se sice daná hodnota do stránky vloží (ve zdrojáku je vše jak má), ale JavaScript to vyřadí z provozu. Tedy: - takto to šlape: <?php echo $text[0];?> a takto už ne: <?php echo $text[0];?> <?php echo $text[1];?> ... ... ... Kudy z toho? |
||
JJ Profil * |
#10 · Zasláno: 1. 2. 2011, 14:32:48
Oprava:
toto šlape: <span class=\'pi33\'>A1</span> <span class=\'pi33\'>A1</span> <span class=\'pi33\'>B1</span> <span class=\'pi33\'>C1</span> ... ... ... |
||
Chamurappi Profil |
#11 · Zasláno: 1. 2. 2011, 14:35:14
Reaguji na JJ:
V zápisu JS řetězce nemůžeš mít natvrdo konec řádku. |
||
JJ Profil * |
#12 · Zasláno: 1. 2. 2011, 15:25:10
Nerozumím.
|
||
JJ Profil * |
#13 · Zasláno: 1. 2. 2011, 16:02:26
Tak příklad je zde:
http://www.extremeways.cz/test/index.php viz spodní dvě patra: spodní funguje, to nad ním ne. Proč? Rozdíl: www.extremeways.cz/test/imagemaps/text.txt - má tři řádky - nefunguje www.extremeways.cz/test/imagemaps/text2.txt - má jen jeden řádek - funguje |
||
Enyeus Profil |
#14 · Zasláno: 1. 2. 2011, 16:10:40
Co jsem zjistil z Chrome: "Uncaught SyntaxError: Unexpected token ILLEGAL - index.php:33"
|
||
JJ Profil * |
#15 · Zasláno: 1. 2. 2011, 16:35:50
Mě Chrome najde sice jednu chybu, ale nedokáže ji identifikovat. (verze 10.x.x.x dev)
Každopádně pokud nechám texťákách jen jednu řádku - žádné chyby nehlásí. Ani validátor nehlásí nic co by to vysvětlovalo. Zkusil jsem to načíst i do pole a z něj pak vložit - výsledek stejný. Plánuji to v budoucnu hodit do databáze, ale teď to z časových důvodů nemůžu dělat. |
||
_es Profil |
#16 · Zasláno: 1. 2. 2011, 16:43:52
JJ:
„má tři řádky - nefunguje“ Chamurappi ti predsa v [#11] vysvetlil prečo. Ak chceš mať v textovom reťazci v JS koniec riadka použi \n .
|
||
JJ Profil * |
#17 · Zasláno: 1. 2. 2011, 16:57:48
Asi mám dlouhé vedení, ale co s tím má konec řádku? Já přeci vkládám jeden řádek textového souboru do zdrojáku pomocí tohoto:
<?php echo $text2[0];?> $text = File ("imagemaps/text.txt"); takže chci od PHP vypsat jeden řádek textového souboru (v tomto případě první řádek) takže JS by s obsahem toho textového souboru (vyjma požadovaného řádku) neměl vůbec přijí do styku. Zdroják je sice toto: <area onMouseOver="writeText('Nějaký text + kus PHP: <?php echo $text2[0];?>')" onMouseOut="writeText('')" shape="poly" title="idt2" alt="idt2" href="#" coords="78,224,312,234,376,233,376,235,612,244,612,197,78,198"> ale prohlížeč od serveru dostane toto: <area onMouseOver="writeText('Nějaký text + kus PHP: <a href=\'#\' class=\'pi32\'>A1</a>')" onMouseOut="writeText('')" shape="poly" title="idt2" alt="idt2" href="#" coords="78,224,312,234,376,233,376,235,612,244,612,197,78,198"> |
||
_es Profil |
#18 · Zasláno: 1. 2. 2011, 17:28:54 · Upravil/a: _es
JJ:
„viz spodní dvě patra: spodní funguje, to nad ním ne. Proč?“ Lebo máš v textovom reťazci, posielanom do funkcie writeText koniec riadka - pred | a ještě PHP . (odkaz v [#13]).
|
||
JJ Profil * |
#19 · Zasláno: 1. 2. 2011, 17:56:58
Aha, už jsem doma - sorry mám dlouhé vedení. Takže koncem řádky je míněn skrytý znak, který se do souboru *.txt vloží při stisknutí enter.
Problém je, že já to tam potřebuji -proto, aby data byla na jednotlivých řádcích. A teď se blbě zeptám: kam umístit \n |
||
_es Profil |
#20 · Zasláno: 1. 2. 2011, 18:03:36
JJ:
„kam umístit \n?“ Tam, kde sa nachádza ten „skrytý“ znak, teda treba nahradiť všetky výskyty konca riadku za \n .
|
||
JJ Profil * |
#21 · Zasláno: 1. 2. 2011, 18:41:19
Bohužel v ten okamžik s tím PHP (netuším proč) pracuje jako s jedním řádkem.
Nakonec jsem to vyřešil takto: $text = explode(',', file_get_contents('imagemaps/text.txt')); text.txt: <span class=\'pi33\'>A1</span>,<span class=\'pi33\'>B1</span>,<span class=\'pi33\'>C1</span> Protože na webu žádné funkční řešení k dispozici není - tak jen pro info (třeba se to někomu hodí a nebo to někdo vylepší): - řeším klikací obrázkovou mapu s hover efektem, tooltipem do kterého jsou dynamicky vkládána data. V tuto chvíli to řeším pomocí JavaScriptu a vypadá to, že už to mám (předběžně testováno na Win7 - FF3 a dál, Chrome 3 a výše, IE 6-9, Safari 4,5, Opera 9,10) Večer to testnu na Win XP a v dohledné době to kámoš testne na Linuxu). Po tomto mém řešení se tu na fóru kdysi někdo pídil: - jinak klikací mapu s hover efektem, tooltipem, dynamicky načítanými daty a hlavně nepravidleným tvarem a to jen PURE CSS mám vyřešenou a otestovanou na Win XP, Vista, 7 - FF1 a dál, IE6-9, Opera 9,10,11, Chrome 1 - 10dev, Safari 3-5 a na Linuxu - FF a protože její vytvoření je docela časově náročné řeším to nyní pomocí JS (nevím zda se tu smí uvést adresa, aby to nebylo bráno jako reklama - když tak, ať to admin smaže) Během cca 2 měsíců zprovozním web www.extremeways.cz na kterém dám obě řešení v *.zipu ke stažení vč komentáře. |
||
Časová prodleva: 13 let
|
0