Javascript: checken of een padnaam een directory is

Is er in Javascript een functie waarmee je kan zien of iets een directory is (en geen file, bijvoorbeeld)??

Ik doe:

[code:1:7e3a0f5523]var links =
dirListing.document && dirListing.document.links ?
dirListing.document.links : new Array();
[/code:1:7e3a0f5523]

En dan wil ik dus bijvoorbeeld kunnen zeggen:

[code:1:7e3a0f5523]for (var l = 0; l < links.length; l++) {
if( dit_is_een_directory( links[l].pathname ) ) {
… doe iets…;
}
}
[/code:1:7e3a0f5523]

Ofzo…

Wat is je doel?

Nou, ik wil kijken of ik een directory listing/file boom kan maken in Javascript. Op de manier die ik schetste krijg ik netjes alle ietms uit een bepaalde directory, maar ik wil bij folders natuurlijk een ander plaatje zetten dan bij files... En buiten dat moet er ook iets anders gebeuren als je op een folder klikt dan op een file...

Misschien begrijp ik je niet precies, maar om een directory uit te lezen heb je een server-side script nodig, zoals PHP. JavaScript is client-side. Het enige dat je dan kan doen met JavaScript is, zoals jij al gedaan hebt, de urls uit het HTML-document in een array opslaan. Met reguliere expressies kun je de strings controleren. In jouw voorbeeld ben je op zoek naar strings die op de drie- na laatste plaats een punt hebben, dat zij dus documenten. Er mag dan natuurlijk ook geen slash achter die punt meer voorkomen. Kijk [url=http://www.regular-expressions.info/javascript.html]hier[/url] voor meer informatie over reguliere expressies. Succes.

Oh ja, voor zo’n simpele check (kijken of het drie- na laatste teken een punt is), kun je ook indexOf() gebruiken.

Ja, dat is alleen niet helemaal waar wat je zegt. Kijk maar eens [url=http://www.faqts.com/knowledge_base/view.phtml/aid/1463]hier[/url] (heb ik het ook vandaan)

Als je die file op je eigen computer zet (als bijvoorbeeld directoryListing.html)en in je browser opent als

[code:1:5b54cc940f]file:///directoryListing.html?/c:/[/code:1:5b54cc940f]

dan krijg je keurig alle files op de c schijf.

(sorry, zit op windows hier, kan het even niet checken op mijn mac…).

Lukt dus alleen op je eigen computer, maar toch…

En die oplossing die jij aandraagt zal vaak best goed gaan, maar je hebt ook extensieloze files natuurlijk…

extensieloze files????? Dat is nieuw voor me. Weet je het zeker? En ik neem aan dat je je site straks op een server wilt zetten. Dan heb je niks meer aan je script.

Ja, klopt, maar het is voor een of andere applicatie, die gebruik maakt van een browser om content te tonen. De applicatie, en dus ook de browser die daarin zit, en de content staan op de computer van de gebruiker. Dus als je dan met Javascript dit script doet, dan geeft 'ie de files op de server waar dat document zelf op staat, en dat is dus ook de server van die gebruiker..! Dus eigenlijk is dit daarmee wel een soort server-sided Javascript. Toch..?!?

En wat die files betreft, een extensie is echt niet nodig. Als je het niet gelooft (en dat moet je nooit zomaar doen natuurlijk…!): in mijn versie van Word (op de Mac) kun je bij ‘Save as…’ een knopje aan-/uitvinken dat zegt ‘Append file extension’. Als je dat uitzet, en je zet verder geen punten in de filenaam, dan krijg je echt extensieloze files.
Als je trouwens op de command line doet:

[code:1:da29deb21b]%> cat > xxx[/code:1:da29deb21b]
en je typt een eind heen, en sluit af met ctrl-d, dan heb je ook een extensieloze file.

En als je op diezelfde command line zegt

[code:1:da29deb21b]%> mv myFile.doc myFile[/code:1:da29deb21b]
dan ben je je extensie ook echt kwijt.

Beetje willekeurige voorbeeelden, maar even om aan te geven dat de aanname dat extensieloze dingen directories zijn echt niet veilig is…

En als je trouwens zegt

[code:1:da29deb21b]%> mv myFile.doc myFile.jpg[/code:1:da29deb21b]
dan heb je een Word document met de extensie jpg. Dit even geheel terzijde, en het is ook een heel beroerd idee om te doen, maar ik wil maar zeggen, extensies op zichzelf zeggen helemaal niks.

En daarbij kunnen namen van folders ook best punten bevatten. Ik geef toe, erg voor de hand liggend is het allemaal niet, maar daar gaat het niet om…

[quote:f0c6618c73]En daarbij kunnen namen van folders ook best punten bevatten. Ik geef toe, erg voor de hand liggend is het allemaal niet[/quote:f0c6618c73]

Behalve dan, bedenk ik me net, dat alle applicaties op de Mac eigenlijk folders zijn, met de extensie .app (dus het is een folder, en hij heeft een extensie).
Alleen wordt die extensie automatisch verborgen door de Finder.

Maar als je doet

[code:1:f0c6618c73]%> ls /Applications/[/code:1:f0c6618c73]
dan zie je dat Safari bijvoorbeeld eigenlijk Safari.app heet.

Als je dan in de Finder ctrl-klikt op Safari, en je doet ‘Show Package Contents’, dan zie je alle folders die erin zitten.

[quote:66b35cff4c="MacTommy"]dan heb je een Word document met de extensie jpg.[/quote:66b35cff4c] Hahahaha, ik moet even lachen om je voorbeeld. Maar ja, je hebt zeker gelijk. Dat is inderdaad niet veilig genoeg.

Wat je wilt lijkt me bijna onmogelijk, ik heb het script van de pagina waar je aan refereert ook getest, maar echt werkend krijg ik het niet. Heb je zelf al iets werkend?