ugrás a tartalomhoz

Lehetséges egy HTML linkre több esemény?

Anonymous · 2005. Nov. 25. (P), 13.11
Üdvözletem!

Talán másoknak is érdekes lehet, számomra nagyon fontos lenne, ha tudnám, hogyan lehet egy html linkre több eseményt tenni. Részletesebben a problémám a következő:

Van egy 3 frame-ből álló oldalam. (Tudom, hogy nem kellene frame-kkel bohóckodni, de mivel az oldal html és flash kombinációja, nem volt más lehetőségem.) Az első frame (flash) a Fejléc, a 2. frame (flash) egy oldalsó képscroll, a harmadik (html) meg maga a tartalmi frame, ahová jelen esetben egy hosszú, linkekkel tűzdelt tartalomjegyzék van betöltve. Azt szeretném elérni, hogy a tartalomjegyzékben elhelyezett html linkre kattintva, mind a 3 frame-be töltse be a megfelelő oldalakat. A tartalomjegyzékből bármelyik fejezetre ugorva annak megfelelő fejléce, képscrollja és tartalmi része töltődjön be a megfelelő frame-be.

Milyen praktikus megoldás van erre?
 
1

Megoldások

Poetro · 2005. Nov. 25. (P), 13.25
  • frame-ek elhagyása
  • javascript onclick használata linkeknél (hátrány: kikapcsolt JS esetén nem működik) ekkor az onclick-re a megfelelő frame-ekbe a megfelelő tartalom behívása

--------
Poetro
2

Kód

Anonymous · 2005. Nov. 25. (P), 13.30
Frame-ket nem tudom elhagyni, de ez a JS megoldás érdekelne. (még ha kompromisszumokkal is jár) Tudnál nekem írni egy olyan kódrészt, ami az onclick-re 3 linket rak?
3

Frame src

attlad · 2005. Nov. 25. (P), 14.10
<a target="_top" href="/help/no-javascript-info.html" onclick="parent.document.getElementById('frame1id').src = 'http://www.google.com/'; return false;">Link 1</a>
Attila
4

???

Anonymous · 2005. Nov. 25. (P), 14.19
Ezt nem teljesen értem. ???
5

Mit?

attlad · 2005. Nov. 25. (P), 15.08
Hozzá való HTML kód valahogy így néz ki:

<frame id="frame1id" src="...">
<frame id="frame2id" src="...">
...
Attila
9

Valami nem stimmel...

Anonymous · 2005. Nov. 28. (H), 14.59
Atti!

Valami nem működik jól, mit csinálok rosszul?

Most már odáig jutottam, hogy 2 frame-re bontottam az oldalt, felül a fejléc alol a tartalom. (A tartalmi részben van egy i-frame, de az már nemlényeg.)

A framek:
<frameset  rows="173,*" border="0">
    <frame id="up" name="fejlec" src="bevezeto_fej.html" marginwidth="0" marginheight="0" scrolling="no" frameborder="0">
    <frame id="main" name="tartalom" src="bevezeto.html" marginwidth="0" marginheight="0" scrolling="no" frameborder="0">
</frameset>
A tartalomjegyzékbe elhelyezett linkre ezt a kódot tettem:
<a target="tartalom" href="/bevezeto.html" onclick="parent.document.getElementById('fejlec').src = 'bevezeto_fej.html'; return false;" class="link_class">Bevezető</a>
Próbáltam az ID-re és a Name-re is hivatkozni az onclick-ből de folyton csak az elsőt hajtja végre, ami a href-ben van.

Miért?
11

Id kell

attlad · 2005. Nov. 28. (H), 17.29
A getElementById függvény a megadott id alapján adja vissza az elemreferenciát, szóval nem name kell. A targetet is félreértetted, az csak azért kellett, hogy akiknél nincs JavaScript azoknak készíthess egy súgóoldalt, hogy mit állítsanak be/miért nem működik.

Szóval hogyan is néz ki a dolog.. Van egy frameset oldal, aminek a tartalma mondjuk most ez:

<frameset rows="33%, 33%, *">
<frame id="f1" src="about:blank">
<frame id="f2" src="about:blank">
<frame id="f3" src="menu.html">
</frameset>
Kell a menu.html, amiben a linkek vannak, amire kattintva 2, 3 frame tartalma változik. Ez valahogy így:

<a target="_top" href="/no-javascript.html" onclick="parent.document.getElementById('f1').src = 'a.html'; parent.document.getElementById('f2').src = 'b.html'; return false;">Link 1</a>
<a target="_top" href="/no-javascript.html" onclick="parent.document.getElementById('f1').src = 'b.html'; parent.document.getElementById('f2').src = 'a.html'; return false;">Link 2</a>
Az 1. linkre kattintva az első frame-be a.html a másodikba b.html töltödik, a 2. linkre kattintva meg fordítva. Ha nincs JavaScript vagy le van tiltva, akkor a no-javascript.html töltödik be.

(Ha csak 1 frame tartalmát akarod változtatni, akkor persze felesleges a JavaScript.)

Attila
12

SIKERÜLT!

Anonymous · 2005. Nov. 29. (K), 10.30
Nagyon hálásan köszönöm! Sikerült!!!!!
13

Még egy kis apróság...

Anonymous · 2005. Nov. 29. (K), 10.50
Még egy kis apróság és akkor tényleg tökéletes lesz!
Már csak az a bajom, hogy a példádban szereplő menu.html egy iframe-ben van, tehát "egy szintel lejjebb" ezért nem találja az ID-ket. Tehát mondjuk az "f2" id-jű frame-ben van egy iframe és abban van a menu.html...

Erre még dobnál egy megoldást?
14

rájöttem

Webmesterke · 2005. Nov. 29. (K), 11.15
Na addig próbálkoztam míg végül rájöttem! parent.parent.document... Így már minden ok!

Mégegyszer nagyon hálásan köszönöm!
6

Nem kifogás, max nem tudod, hogy kell

janoszen · 2005. Nov. 25. (P), 22.27
Az nem kifogás, hogy Flash meg egyebek, max nem tudod, hogy kell megcsinálni.

1. van iframe
2. van JavaScript, amit tartalom betöltésére lehet használni, ha minden kötél szakad
3. lehet szerver-oldalon programozni. Szinte minden host-on van már PHP, amely segítségével pillanatok alatt össze tudod rakni a megfelelő tartalmat és nem kell a felhasználót szivatni.

Én személy szerint a 3. megoldást szeretem, mert nem kell hozzá felhasználó oldali támogatás és sokkal nagyobb mozgásteret hagy, mint a kliens oldali megoldások. Arról nem is beszélve, hogy Connection:close esetén nincs a 3 oldalhívás + a tartalmak overhead-je.

Jut eszembe! A Flash tud ám dinamikusan betölteni SWF fájlokat (meg minden mást is), úgyhogy még azt is tudod használni.
7

Miért?

Jano · 2005. Nov. 25. (P), 23.31
"Tudom, hogy nem kellene frame-kkel bohóckodni, de mivel az oldal html és flash kombinációja, nem volt más lehetőségem."

Nem értem ezt az indokot. A flash vagy önmagában egy alap HTML lapon van, vagy egy nagy HTML oldalon egy kis területen. Ez teljesen megszokott és lekezelhető dolog.
8

A projektről

Anonymous · 2005. Nov. 28. (H), 14.34
Félreértések elkerülése miatt pár sor a projektről:

Ez egy CD-kiadvány lesz, ahol ugye eleve nem jöhet számításba php. Az ár minőség tárgyalások során a "weboldal alapú" megoldás mellett döntött a megrendelő, ezért html és flash alapokra építkeztem.
Először úgy oldottam meg, hogy egy táblázaton belül voltak az i-frame-k. 1 frame-ben flash fejléc, 2. frame-ben flash képváltások, 3. frame-ben html tartalom. A projekt egy 100 oldalas, 3 nyelvű kiadvány cd változata. A tartalom úgy épül fel, hogy a fejezetek teljesen egyedi színvilágot kaptak, így minden fejezetet át kellett színeznem és elkészíteni hozzá a keretrendszert. Nem vészes 9 keretet kellett megcsinálni, amit szépen a táblázatra húztam, mint egy bőrt. 9 flash fejléc, 9 képváltás.
Egy picit ügyeskedni kellett a struktúrával, mert a fejléc háttérszíne egy átmenet, ezért a fejlécet egy önálló frame-be helyeztem.

Eddig minden stimmelt, de jött a fejezetváltások témaköre. Kétféleképpen lehet fejezetet váltani:

1.) Flash fejlécben elhelyezett fejezetváltó nyilakkal (Ez egyszerű, mert a flash button onPress-re akár 3 GetURL-t is rátehettem.)

2.) A tartalomjegyzékből is lehessen ugrálni, ám ez a tartalomjegyzék egy Html oldal, telis tele linkekkel.

Na ezért kértem segítséget és ezért kell html-ből frame-kbe linkelnem változó tartalmakat.
10

CD-n "szerverkörnyezet"

Dualon · 2005. Nov. 28. (H), 15.15
Ez egy CD-kiadvány lesz, ahol ugye eleve nem jöhet számításba php.


USB-ről futtatható Apache, PHP és MySQL, s bár nem próbáltam, talán CD-ről is működne.
"Némileg" leegyszerűsödne az életed, a lehetőségek pedig nagyban bővülnének.
Hátránya talán annyi, hogy Win, Linux, stb. környezetekhez más-más szerverek kellenek.

Dúalon
http://e-arc.hu/
16

Ez meg mindig nem indok

janoszen · 2005. Nov. 29. (K), 11.21
Udv!

Ez meg mindig nem indok, mert siman megcsinalhattad volna PHPval ugy, hogy az adott oltalakat szepen lementegesse... En mar csinaltam ilyet.
15

Egyszerű lenne az élet ha minden menne...

Webmesterke · 2005. Nov. 29. (K), 11.21
Most egy újabb probléma került elő. Mégpedig a következő:

Frame-be töltött html-ben elhelyezett horgonyra nem tudok ugrani, mikor a frame-be betöltöm a tartalmat. :(
Tehát nem tudok frame-be úgy betölteni egy html-t, hogy az abban elhelyezett horgonyra a betöltődéskor ugorjon a lap...

Létezik erre megoldás?
17

Ne hasznalj framet

janoszen · 2005. Nov. 29. (K), 11.22
Mint mar sokan ajanlottak, ne hasznalj framet es akkor nincs gond.

Elvileg tudsz horgonyra ugrani, megadod az URLt. Persze, JSsel nem tudom, hogy lehet...