[js] object niet herkend, volgorde verkeerd?

Pagina: 1
Acties:

  • Dark Blue
  • Registratie: Februari 2001
  • Laatst online: 23-08 22:18

Dark Blue

Compositionista!

Alpenmeisje

Topicstarter
Laat ik jullie even dit duidelijk maken:
Ik ben een Javascript n00b.

Goed, verder met dit topic.

Ik heb op http://www.stylite.nl een menubalk, met daarin een link naar de portfolio pagina. Op die pagina kun je een 'preview' aanklikken, die uitwerking heeft op het frame 'l-lower'. In l-lower staat doorgaans de pagina 'l-lower.htm' maar zodra je een preview aanvraagt wordt dit 'l-lower.php' met een preview image. Waarom ik hiervoor een php én een html-bestand voor gebruik, doet even niet ter zake.
l-lower.htm is voor een lege pagina, l-lower.php verzorgt een preview.

Op het moment dat iemand in Portfolio zit, en een preview open heeft staan (l-lower.php is geladen) en hij gaat úit de Portfolio naar een andere pagina uit het menu, moet l-lower.php vervangen worden door l-lower.htm zodat de preview sluit.

Dit bovenstaande mag je overslaan als het je niet om de bedoeling maar om de code gaat...

Ik heb onderstaande code:
PHP:
1
2
3
4
5
6
7
 function LeegPrev() 
{  
if (parent.document.frames['l-lower'].location != 'l-lower.htm') 
    { 
    parent.document.frames['l-lower'].location = 'l-lower.htm'; 
    }
}

Papa Eend bedankt voor dit stukje JS :)

Ik roep de functie aan door achter elke link in het menu te zetten:
PHP:
1
<a (..) href="r-lower.php?inside=index" onmousedown="javascript:LeegPrev();">


Maar, nu zit er in de javascript een foutje. Op het moment dat ik een link
aanklik, krijg ik:
'parent.document.frames.l-lower.location' is leeg of geen object
Nou lijkt het me dat de volgorde dus verkeerd is, maar as I said, ik ben hier een n00b in. Wie weet wel hoe het goed moet?

heidiulrich.nl | adventura.nl : rugzakavonturen | pathwise.nl : prepping geeks to get jobs


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

frames is een eigenschap van window niet van document

gebruik dus parent.frames [ '' ] ipv parent.document.frames [ '' ]

edit:

overigens javascript: in je onmousedown is ook nutteloos
Ik ben een Javascript n00b. [...] Papa Eend bedankt voor dit stukje JS
Niet alleen jij, kennelijk :X

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

www.heidi.stylite.nl - true, some guys can't cook...lucky me, I'm a lady
:+

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 13:13

crisp

Devver

Pixelated

Je zou die functie ook in de onunload van je body kunnen zetten in plaats van in elke link...

Intentionally left blank


  • Dark Blue
  • Registratie: Februari 2001
  • Laatst online: 23-08 22:18

Dark Blue

Compositionista!

Alpenmeisje

Topicstarter
drm schreef op 09 augustus 2002 @ 17:10:
frames is een eigenschap van window niet van document

gebruik dus parent.frames [ '' ] ipv parent.document.frames [ '' ]

edit:

overigens javascript: in je onmousedown is ook nutteloos

[...]
Niet alleen jij, kennelijk :X
Ah joh, Papa Eend is goed in PHP, dat ie nou in JS even een steekje laat vallen deert me dan niet zo.
Ik ga het eens even uitproberen met parent.frames :)

en waarom mag de javascript: eruit? Is daar nog een speciale reden voor?

Overigens, wat is het verschil in gebruik van OnMousedown of OnClick?

heidiulrich.nl | adventura.nl : rugzakavonturen | pathwise.nl : prepping geeks to get jobs


  • Dark Blue
  • Registratie: Februari 2001
  • Laatst online: 23-08 22:18

Dark Blue

Compositionista!

Alpenmeisje

Topicstarter
crisp schreef op 09 augustus 2002 @ 17:30:
Je zou die functie ook in de onunload van je body kunnen zetten in plaats van in elke link...
Dat hád gekund ja, ware het niet dat die body van de pagina met preview-links altijd r-lower.php is, met elke keer een ander stukje geinclude. En ja, hij onunloadt hem dan wel als ik r-lower met een andere variabele eraan opvraag, maar je weet maar nooit.. IE haalt hem soms uit de cache en verandert alleen de inhoud dus daar vertrouw ik niet zo op.

heidiulrich.nl | adventura.nl : rugzakavonturen | pathwise.nl : prepping geeks to get jobs


  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

Dark Blue schreef op 09 augustus 2002 @ 17:54:
[...]
Overigens, wat is het verschil in gebruik van OnMousedown of OnClick?
Ff Googlen:
The onClick-event is triggered when you release the button, i.e. onClick is
onMouseDown + onMouseUp.

If some cunt can fuck something up, that cunt will pick the worst possible time to fucking fuck it up, because that cunt’s a cunt.


  • Dark Blue
  • Registratie: Februari 2001
  • Laatst online: 23-08 22:18

Dark Blue

Compositionista!

Alpenmeisje

Topicstarter
Dan moet ik idd OnClick gebruiken...

heidiulrich.nl | adventura.nl : rugzakavonturen | pathwise.nl : prepping geeks to get jobs


  • Dark Blue
  • Registratie: Februari 2001
  • Laatst online: 23-08 22:18

Dark Blue

Compositionista!

Alpenmeisje

Topicstarter
drm schreef op 09 augustus 2002 @ 17:10:
frames is een eigenschap van window niet van document

gebruik dus parent.frames [ '' ] ipv parent.document.frames [ '' ]

edit:

overigens javascript: in je onmousedown is ook nutteloos

[...]
Niet alleen jij, kennelijk :X
Deze oplossing doet het niet, hij zegt nu ditt
'parent.frames.l-lower.location' is leeg of geen object
....

heidiulrich.nl | adventura.nl : rugzakavonturen | pathwise.nl : prepping geeks to get jobs


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 13:13

crisp

Devver

Pixelated

location is toch ook weer een object; zou je de href property van de location niet moeten hebben?
PHP:
1
2
3
4
5
6
7
 function LeegPrev()  
{   
if (parent.frames['l-lower'].location.href != 'l-lower.htm')  
    {  
    parent.frames['l-lower'].location.href = 'l-lower.htm';  
    } 
}

*just a thought*

Intentionally left blank


  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

een hyphen in je objectnaam is verboden; je geeft daarme aan dat rechts van - van links afgetrokken moet worden en dat wil je niet ;)

www.jurgroessen.nl


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 13:13

crisp

Devver

Pixelated

Hangloozz schreef op 09 augustus 2002 @ 18:24:
een hyphen in je objectnaam is verboden; je geeft daarme aan dat rechts van - van links afgetrokken moet worden en dat wil je niet ;)
That was my second thought :)

Intentionally left blank


  • Dark Blue
  • Registratie: Februari 2001
  • Laatst online: 23-08 22:18

Dark Blue

Compositionista!

Alpenmeisje

Topicstarter
Ok, dan ga ik dat eens proberen :)
dus eerst die streepjes ertussenuit en gewoon de oude code; werkt die, issut goed;
en anders probeer ik crisps code nog even, of is die 'beter' ?

heidiulrich.nl | adventura.nl : rugzakavonturen | pathwise.nl : prepping geeks to get jobs


  • Dark Blue
  • Registratie: Februari 2001
  • Laatst online: 23-08 22:18

Dark Blue

Compositionista!

Alpenmeisje

Topicstarter
Ik heb nu alle bestandsnamen omgewisseld van l-lower naar l_lower , en dus ook de frames.
Result:
de fout blijft.
Ik heb mét de underscore namen, nu ook crisps code overgenomen.
Result: de fout blijft.

Wat nu?

heidiulrich.nl | adventura.nl : rugzakavonturen | pathwise.nl : prepping geeks to get jobs


  • Dark Blue
  • Registratie: Februari 2001
  • Laatst online: 23-08 22:18

Dark Blue

Compositionista!

Alpenmeisje

Topicstarter
Ik heb wat op irt.org zitten zoeken en ik ben nu al een stukje verder.

Mijn frameset zag er namelijk zo uit, even wat pseudo code, ik ga m hier niet zo lang als ie was posten ivm. layoutverneuking:
PHP:
1
2
3
4
<frameset cols="20,80">
    <frame name="left" src="left.htm">
    <frame name="right" src="right.htm">
</frameset>

Vervolgens stonden er in left.htm en right.htm weer hetzelfde type framesets, maar dan met rows.
Vraag me niet waarom ik het ooit handig heb gevonden, of je er nou meerdere subpagina's met frames van maakt enzo, de browser moet zelfs nog meer code doorploeteren dan. Enfin. ik heb nu die hele sub-pagina structuur eruit gehaald en gewoon simpel
PHP:
1
2
3
4
5
6
7
8
9
10
<frameset cols="20,80">
    <frameset rows="bla,bla">
        <frame name="left" src="left.htm">
        <frame name="l_lower" src="l_lower.htm">
    </frameset>
    <frameset rows="bla,bla">
        <frame name="r-upper" src="r-upper.htm">
        <frame name="r-lower" src="r-lower.htm">
    </frameset>
</frameset>


Wat ik op irt las was namelijk dat je frame wel een 'parent' van de ander moet zijn. En dat was de mijne niet, mijne was een grandparent! 8)7
(Ja, ik vond het gewoon zo stom om te bedenken... )
Dus, ik heb nu de code van crisp, en verder niks veranderd (ja die underscores) thnx Hanglosjes, ik had er al een keer aan gedacht maar nooit verwacht dat het in Javascript zo belangrijk zou zijn...

Output:
Het werkt!

edit:

Ik gebruik nu echter wel
parent.l_lower.location.href
inplaats van dat hele frames location gedoe.. maakt dat uit?

heidiulrich.nl | adventura.nl : rugzakavonturen | pathwise.nl : prepping geeks to get jobs


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

* SchizoDuckie excuseert zich voor zijn n00berigheid. ik werk gewoon nooit met frames :P

Stop uploading passwords to Github!


  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

Dark Blue schreef op 09 augustus 2002 @ 20:04:

Dus, ik heb nu de code van crisp, en verder niks veranderd (ja die underscores) thnx Hanglosjes, ik had er al een keer aan gedacht maar nooit verwacht dat het in Javascript zo belangrijk zou zijn...

Output:
Het werkt!

edit:

Ik gebruik nu echter wel
parent.l_lower.location.href
inplaats van dat hele frames location gedoe.. maakt dat uit?
geen dank, ik heb mezelf van meet af geleerd géén hyphens te gebruiken in welke naam dan ook, altijd underscores om zulk soort situaties te vermijden.
Neemt het over :)

en dat gedoe rond die frames:
nee het maakt niet uit maar de door crisp aangegeven code is de officiele schrijfwijze; objecttype met tussen accolades de index van de array van het aangegeven objecttype.
Het wordt tegenwoordig wel door alle browser in de korte annotatie begrepen, alleen NS4 heb ik er wel eens op betrapt dat met framesnesting de officiele scrhijfwijze uit de kast moest :)

www.jurgroessen.nl


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 13:13

crisp

Devver

Pixelated

Broodnodige informatie achterhouden dus (geneste frames)! :P
wb de schrijfwijze: als je zegt
code:
1
parent.l_lower

dan kan l_lower eigenlijk van alles zijn; voor hetzelfde geld heb je een functie of variabele in je parent staan die zo heet. De meeste browser hebben er echter geen moeite mee; die lopen de hele window structuur af totdat ze een match vinden met de naam l_lower en kijken wat voor object dat is (een frame dus).
NS4 heeft hier dus inderdaad wel eens wat moeite mee, dus die 'help' je dan alvast door dmv
code:
1
parent.frames['l_lower']

aan te geven dat l_lower een frame-object is. Even testen dus in NS4 en je weet of het in dit specifieke geval wel of niet nodig is.

Om het even door te trekken; de schrijfwijze met die [] accolades wil niets anders zeggen dan dat je een property in een array-object aanspreekt; zolang dit vaste waardes zijn kan je het ook met een punt-notatie doen.
Dit:
code:
1
parent.frames['l_lower'].location.href

is dus in feite hetzelfde als:
code:
1
parent.frames.l_lower.location.href

Het voordeel van de accolades is dat je er ook een variabele tussen kan zetten; dat kan in de punt-notatie niet. In de accolade notatie is de naam van de object-verzameling wel verplicht; in de punt-notatie 'zoekt' de browser zelf bij welke verzameling de property hoort. Hetzelfde geld dus ook bv voor forms...

Intentionally left blank


Verwijderd

Papa Eend schreef op 09 augustus 2002 @ 22:11:
/me excuseert zich voor zijn n00berigheid. ik werk gewoon nooit met frames :P
jaja, rotsmoes })
heb jij dan wel in een reference gekeken voordat je het opgaf? >:)
Pagina: 1