21. august 2005 - 14:58
Der er
22 kommentarer og 1 løsning
Fang den aktive (og ukendte) frame/ramme
Er det muligt at fange/finde den aktive frame/ramme, uden at kende navnet/henvisning til rammen?
Det skal bruges i browseren Opera (
http://www.opera.com/download ).
Jeg skal, via knap/bookmark(let), arbejde med den aktive frame/ramme, men uden at kende navnet/henvisning til den.
Jeg har nemlig en knap/bookmark(let) der hopper til bunden af siden.
Koden ser sådan ud:
java script:window.scrollTo(0,screen.height*10000);void(0)
Koden kan også afvikles direkte i adresse-baren.
Som sagt:
Det skal bare virke i Opera, da det kun skal bruges på min egen computer.
- Points kan evt sættes op, hvis det viser sig at være et kompliceret projekt.
Skriv lige, hvis det ikke er forståeligt..
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
21. august 2005 - 15:02
#1
Hvis du trykker på en knap, vil den jo have fokus, ligesom den yderste frame vil have fokus, hvis du afvikler noget fra adresselinjen ... -- er det også i et dokument, du selv laver ?-) -- for så kunne man registrere hvilken frame, som får fokus og på den måde finde den !-)
21. august 2005 - 15:10
#2
Det er ikke i et dokument, men i selve browseren.. dvs, en del af panelet/menuen/toolbaren..
Jeg ved godt, at framen hvor knappen er i, vil få fokus.. men det er i selve browseren..
Screenshot:
http://thesurfer.users.whitehat.dk/img/exp_my_q/opera_toolbar.jpg Toolbaren, med bookmark(lets der afvikler JavaScript kode, er markeret med en gul firkant.
/theSurfer
21. august 2005 - 15:12
#3
Lige nu, bruger jeg "window.scrollTo...". Det virker jo på hele browser vinduet. Hvis jeg skal bruge det på en frame, skal jeg bruge noget i stil med "top.FrameNavn.window.scrollTo..." .. Men hvad nu, hvis jeg ikke kender "FrameNavn"? Så bliver jeg nødt til, at fange den aktive frame.. /theSurfer
21. august 2005 - 15:13
#4
Hvad med at bruge frames-collection ?-)
21. august 2005 - 15:16
#5
Hvordan skal det bruges? Jeg kan jo ikke bruge "window.frames[0]...", da jeg ikke kender "[0]".. der kan være et vilkårligt antal frames på en side.. Jeg kommer i tanke om et script, med noget actCol eller noget i den stil.. kan man ikke lave noget ligende..? actCol tingsten virker sikkert kun, fordi man selv har direkte adgang til siden.. /theSurfer
21. august 2005 - 15:20
#6
Du kan jo køre en bookmarklet, som initialiserer en funktion, som gemmer det først !-)
21. august 2005 - 15:21
#7
me is lost :-) Hvordan mener du? /theSurfer
21. august 2005 - 15:29
#8
Når du møder en side, hvor du tror, du vil bruge den kører du en bestemt bookmarklet, som påhæfter en funktion på alle frames !-) Kører en tur igennem alle elementer i frames-collection, og sætter en funktion på, med normal javascript-notation: for(i=0;window.frames.length>i;i++){ window.frames[i].onfocus = function(){top.activeFrame = this;}; } -- så kan du aflæse værdien af activeFrame, når du får brug for det !-) -- jeg husker ikke præcis, hvornår det er nødvendigt at neste, men det er det sikkert, hvis du har framesets i (i)frames og/eller iframes i (i)frames !-)
21. august 2005 - 15:47
#9
hmm.. Den burde skifte activeFrame til den man klikker på.. korrekt? Hvis ja, så virker det ikke helt.. activeFrame er altid den sidste frame.. /theSurfer
21. august 2005 - 15:48
#10
21. august 2005 - 15:52
#11
PS: min kode er: java script:activeFrame.window.scrollTo(0,screen.height*10000);void(0) /theSurfer
21. august 2005 - 15:56
#12
Tjah, jeg fik en http 400 på search-engine osv... -- jeg har overhovedet ikke testet, så jeg ved ikke om det fungerer ... -- og så ville jeg altid selv bruge top.activeFrame.scrollTo(), men da du alligevel får fat i noget, er det nok ikke det, som er fejle-kilden !-)
21. august 2005 - 15:56
#13
Det ser ud til at virke fint, hvis jeg bruger "...[i].onclick = funct...".. Altså med onclick i stedet for onfocus.. /theSurfer
21. august 2005 - 15:59
#14
Yes! :-) Nu virker det fint :-) Smid lige et svar :-) /theSurfer
21. august 2005 - 16:00
#15
Hvordan så ?-) Velbekomme '-)
21. august 2005 - 16:03
#16
Det virker, hvis jeg bruger onclick i steder for onfocus. Og "top" i "activeFrame.window..." er optionelt.. Nu skal jeg bare have lavet en IF-sætning, så samme bookmarklet virker, både når det er almindelige vinduer, og når der er frames.. :-) Jeg tænkte på noget i stil med: java script:if (top.activeFrame == undefined) { window.scrollTo(0,screen.height*10000); } else { top.activeFrame.window.scrollTo(0,screen.height*10000);}; void(0) Hvad siger du til det? /theSurfer
21. august 2005 - 16:07
#17
Den skulle der ikke være noget galt i ... -- men activeFrame er allerede et window-objekt, som har en property, som er den selv, nemlig window, så stryg de ekstra bogstaver: top.activeFrame.scrollTo() !-) -- og forkortes yderligere kan den godt: java script:if (!top.activeFrame) { window.scrollTo(0,screen.height*10000); } else { top.activeFrame.scrollTo(0,screen.height*10000);}; void(0)
21. august 2005 - 16:07
#18
-- og tak for point ;~}
21. august 2005 - 16:07
#19
Ser ud til at virke som det skal: java script:for(i=0;window.frames.length>i;i++){ window.frames[i].onclick = function(){top.activeFrame = this;}; }; void(0) og: java script:if (top.activeFrame == undefined) { window.scrollTo(0,screen.height*10000); } else { top.activeFrame.window.scrollTo(0,screen.height*10000);}; void(0) Kan man på nogen måde, kombinere de 2 ting, til 1 bookmarklet, så man kun skal klikke på 1 bookmarklet? #1 looper jo alle frames igennem, og vil flytte focus/aktiveFrame til den sidste frame.. hvis #2 bliver afviklet direkte efter det, scrolles den sidste frame.. går jeg ud fra (har ikke testet..).. /theSurfer
21. august 2005 - 16:08
#20
Jeg har nu rettet min jump-kode til den i 21/08-2005 16:07:09. /theSurfer
21. august 2005 - 16:12
#21
Nej, kombinationen kan jo ikke virke, når du først aktiverer jump-tingen, når du vil hoppe, for så er der jo ikke initialiseret nogen activeFrame variabel forinden ...
21. august 2005 - 16:19
#22
Yes! Long live the Proxomiton :-) Denne kode indsættes automatisk på ALLE websider (runtime) via proxy-programmet Proxomitron, før de min browseren: <script type="text/JavaScript">for(i=0;top.window.frames.length>i;i++){ top.window.frames[i].onclick = function(){top.activeFrame = this;}; };</script> Nu kan jeg nøjes med 1 klik.. :-) Thanks for the help, mate :-) /theSurfer
21. august 2005 - 16:21
#23
Muy bueno !-)
Vi tilbyder markedets bedste kurser inden for webudvikling