Toon posts:

[JS] Dir uitlezen en JPG's in gallerij plaatsen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Men doel is simpel:
Ik zou graag een site maken met allerlei wip's op,
zonder dat ik bij elke upload van een nieuwe wip (gewoon jpg bestand)
iets aan een html code van die site moet veranderen.

Ik heb ongeveer al uitgezocht wat ik moet doen:

1) Dir uitlezen en omzetten naar gallerij:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script language="javascript" type="text/javascript">
    function gallerize() 
    {
      var%20sHTML='<html><head><title>gallery</title><body><center><table%20border=0>';
      var%20y=0;
      links=document.getElementsByTagName(%22a%22);
      for(x=0;x<links.length;x++){a=links[x].href;
      %20if%20(a.match(/jpeg|jpg/i)){sHTML+='<td%20style=%22border-style:solid;border-width:1px%22>
    <a%20target=%22_new%22%20href=%22'+a+'%22>
  <img%20border=%220%22%20width=%22100%22%20src=%22'+a+'%22></a></td>';
      %20if%20(!((x+1)%5))%20sHTML+='</tr><tr>'}};
      document.body.innerHTML=sHTML+'</table></center></body></html>';
      document.close();
    }
</script>


Nu is het zo dat ik 2 frames wil gebruiken,
de bovenste met een lay-out(top) en de onderste(main) dat het bovenstaande javascript toepast.

Nu weet ik niet hoe ik dat in zijn geheel moet aansturen,
heb al gepoogd om via een onload in de body van de topframe te zetten en die te laten verwijzen naar de mainframe. Al weet ik zelf niet hoe het juist moet?

[ Voor 31% gewijzigd door Pelle op 06-01-2005 13:52 . Reden: code-tags toegevoegd ]


Verwijderd

window.frames['framenaam'].functie(); om een functie uit een ander frame aan te roepen

verder is het me niet helemaal duidelijk wat je bedoelt, zet ook je code eens in [code] tags, want dit is niet te lezen. Wat gaat er nou niet goed? en wat heb je al gedaan wat wel lukt?

overigens ben je ook html voor een complete pagina in een body element aan het stoppen volgens mij, lijkt me ook niet de bedoeling

[ Voor 35% gewijzigd door Verwijderd op 06-01-2005 13:47 ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 16:30

André

Analytics dude

Met dat script lees je dus niet een dir uit, dat is ivm security ook helemaal niet mogelijk met js op een website. Daarvoor zul je een serverside script zoals asp of php nodig hebben.

Verwijderd

Topicstarter
Deze code kan je gebruiken als je hem toevoegt aan je favorieten (zet er dan wel javascript: voor)
en dan gaat hij van een dir die je bekijkt een nette gallerij maken,
vb voor dir: http://users.pandora.be/nils_faber/images

en als je dan in je favorieten de 'link' aanklikt zet hij alles mooi om.

  • André
  • Registratie: Maart 2002
  • Laatst online: 16:30

André

Analytics dude

Verwijderd schreef op donderdag 06 januari 2005 @ 14:03:
Deze code kan je gebruiken als je hem toevoegt aan je favorieten (zet er dan wel javascript: voor)
en dan gaat hij van een dir die je bekijkt een nette gallerij maken,
vb voor dir: http://users.pandora.be/nils_faber/images

en als je dan in je favorieten de 'link' aanklikt zet hij alles mooi om.
Dat lukt alleen bij zogenaamde 'open dirs' waar de webserver een soort html pagina serveert waar links op staan naar de bestanden/mappen. Jouw script analuseerd gewoon de links in die pagina en bakt daar weer een html pagina van die het huidige document overschrijft.

Je zult dus in een hidden frame die folder moeten openen en in een zichtbaar frame kun je dan met onload dit script aanroepen. Let wel op dat een heleboel in je script ge-escaped is wat niet nodig is dan:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script type="text/javascript">
  function gallerize() 
  {
    var sHTML = '<html><head><title>gallery</title><body><center><table border="0">';
    var y = 0;
    links = top.frames["naamvanhiddenframe"].document.getElementsByTagName("<a>");
    for (x=0; x<links.length; x++)
    {
      a = links[x].href;
      if (a.match(/jpeg|jpg/i))
      {
        sHTML += '<td style="border-style:solid;border-width:1px"><a target="_blank" href="' + a + '">[img]"'[/img]</a></td>';
        if (!((x+1)%5)) { sHTML += '</tr><tr>' }
      };
      document.body.innerHTML = sHTML + '</table></center></body></html>';
      document.close();
    }
  }
</script>

[ Voor 56% gewijzigd door André op 06-01-2005 14:14 ]


Verwijderd

Topicstarter
http://users.pandora.be/nils_faber/wip/


Daar staat dus wat ik heb en heb dat truukje proberen toe te passen van onload naar main in de topframe , (zie source)
Maar helaas hij doet het niet :(

André wat moet ik dan juist doen?
Want ik ben nog vrij leek in scripten dus veer versta ik er niet van :)

[ Voor 19% gewijzigd door Verwijderd op 06-01-2005 14:13 ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 16:30

André

Analytics dude

Je hebt nu in de onload dit staan:
window.frames['main'].gallerize();

Dat moet gewoon gallerize() worden want de functie staat in dezelfde pagina. Zoals ik ik mijn voorbeeld script al aangegeven heb moet je in die functie de verwijzing naar het onderste frame maken.

Maar dan heb je nog een probleem, het kan zijn dat de top pagina al geladen is en de onderste nog niet waardoor de onload te vroeg is. Je moet dus eerst checken of de pagina al helemaal geladen is.

Verwijderd

Topicstarter
Oké als ik het goed snap, is het javascript nu functioneel,
maar moet ik het nog laten toepassen op de onderstaande frame.
die frame zal altijd dezelfde url zijn,
kan ik dan niet in javascript zeggen
voer de functie gallerize uit op de frame 'main' en doet dat voor
http://users.pandora.be/nils_faber/wip/wips ?
Dan moet ik niet meer zoeken achter een manier om te controlere of de pagina geladen is...

Mijn verbeterde code voor top.html:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onLoad="gallerize()">
<table>
...
</table>
<script type="text/javascript">
  function gallerize() 
  {
    var sHTML = '<html><head><title>gallery</title><body><center><table border="0">';
    var y = 0;
    links = top.frames["main"].document.getElementsByTagName("<a>");
    for (x=0; x<links.length; x++)
    {
      a = links[x].href;
      if (a.match(/jpeg|jpg/i))
      {
        sHTML += '<td style="border-style:solid;border-width:1px"><a target="_blank" href="' + a + '">[img]"'[/img]</a></td>';
        if (!((x+1)%5)) { sHTML += '</tr><tr>' }
      };
      document.body.innerHTML = sHTML + '</table></center></body></html>';
      document.close();
    }
  }
</script>


en al bedankt voor de hulp :d

[ Voor 43% gewijzigd door Verwijderd op 06-01-2005 16:02 ]


Verwijderd

Dit heb ik ook ooit een gemaakt.
Het werkte goed op de hcc-server, maar op de een of andere manier laat het de browser bevriezen op deze server:
http://martijn.heelveel.info/fotoalbum/thumbs/
Deze link bevriest nog niet meteen je browser hoor ;)

[ Voor 3% gewijzigd door Verwijderd op 07-01-2005 00:42 ]

Pagina: 1