prüfen, ob Datei vorhanden (wiederaufgriff aus archiv)
farguano
- javascript
0 Struppi
0 EKKi0 farguano0 Struppi
0 Der Martin
0 Der Martin
Ich würd gern hieran anknüpfen...
Archiv
Mein Problem ist, dass ich ein relativer (HTML & JS) Neuling bin.
Ich hab die letzten 2 Wochen arbeitsbedingt von Null aus angefangen.
Jetzt hab ich das im obigen Archivbeitrag beschriebene Problem,
für das ich eine Lösung mit JS benötige!
PHP geht nicht, da ich in einem Netzwerk arbeite, das PHP nicht unterstützt.
(und das ist leider auch unabänderlich) *würg*
Außerdem arbeite ich nur lokal im Netzwerk:
Ich bewege mich mit dem Browser (von einem server "X")
nur auf der Hdd des selbigen...
Zu meinem eigentlichen Problem:
Ich (will/)muss eine Umleitung auf eine eigene Fehlerseite
("Daten noch nicht vorhanden...") starten, wenn eine regulär über einen Link erreichbare Datei (pdf, jpg, xls) nicht vorhanden sein sollte.
-htaccess (oder wie´s auch immer heißt) kann ich NICHT verändern!!!
Deshalb versuche ich krampfhaft mit mit einer if-Abfrage das ganze in die Gänge zu bringen...
(leider hab ich mit der Funktion, wie ich die Datei anspreche noch kein Glück gehabt...)
Ich hoffe, hier bekomme ich etwas hilfe.
----------------------------------------------------------------------------
Ich poste mal meinen Quellcode aus meiner Test-File: (ist auch jede menge teils durcheinander gewürfelter Müll drin, den ich versucht hab...
aber vllt. ist dort ja ein Ansatz dabei)
Ich habe die Dateien "Falsch.html" & "Richtig.html" im selben Verzeichnis liegen und schiebe die "Richtig.html" zum Testen einfach raus...
----------------------------------------------------------------------------
<html>
<title>Falls</title>
<head>
<script type="text/javascript">
var01 = "richtig.html";
varo2 = "falsch.html";
var variable010 = window.location.pathname;
variable012 = variable010.split("/");
variable000 = variable012[0];
variable100 = variable012[1];
variable200 = variable012[2];
variable300 = variable012[3];
variable400 = variable012[4];
variable500 = variable012[5];
variable600 = variable012[6];
alert(variable500); <!-- Ausgabe: falls.html //-->
pfad = "/" + variable100 + "/" + variable200 + "/" + variable300 + "/" + variable400 + "/";
<!-- Immer noch mein Problemkind //-->
<!-- function prüfen (){ //-->
<!-- if (pfad+var01 != false) //-->
<!-- {alert("falsch");} //-->
<!-- if (pfad+var01 == true) //-->
<!-- {alert("richtig");} } //-->
dahin = pfad+var01;
neu01 = document.location.href;
neu02 = document.location.href;
<!-- http://forum.de.selfhtml.org/archiv/2001/8/t28187/ //-->
<!-- Wie das hier funtz hab ich noch nicht verstanden! //-->
for(i in document.links){rausklaub(document.links[i])}
links000 = i[0];
alert(links000);
links100 = i[1];
alert(links100);
links200 = i[2];
alert(links200);
links300 = i[3];
alert(links300);
links400 = i[4];
alert(links400);
links500 = i[5];
alert(links500);
links600 = i[6];
alert(links600);
<!-- onload="prüfen()" //-->
<!-- //-->
<!-- if (location.search(dahin) == true) //-->
<!-- {alert("richtig - neu");} //-->
<!-- if (location.search(dahin) == false) //-->
<!-- {alert("falsch - neu");} //-->
<!-- //-->
<!-- var info = window.location.href("richtig.html"); //-->
<!-- var info = window.location.href("falsch.html") //-->
<!-- //-->
<!-- if (window.location.port != "richtig.html") //-->
<!-- function prüfen (){ //-->
<!-- var fuer = "richtig.html" //-->
<!-- if (fuer.exists() != false ) //-->
<!-- {A()} //-->
<!-- else //-->
<!-- {B()} //-->
<!-- } //-->
<!-- onload="javascript:prüfen()" //-->
function A(){
window.location.href= "Richtig.html";}
function B(){
window.location.href= "Falsch.html";}
</script>
</head><body >
</body>
</html>
Ich würd gern hieran anknüpfen...
Archiv
Du kannst mit JS nicht prüfen ob eine Datei auf dem server existiert oder nicht.
Struppi.
Mahlzeit Struppi,
Du kannst mit JS nicht prüfen ob eine Datei auf dem server existiert oder nicht.
Jein ... mach einen HTTP-Request (z.B. mittels AJAX) auf die entsprechende URL, werte die Rückgabe aus und Du hast zumindest die Information, ob Du Zugriff auf die entsprechende Ressource hast ... ;-)
MfG,
EKKi
mhh, ok
danke EKKi
ich werd´s versuchen...
ich hatte als alternative auch überlegt,
einfach abzufragen welche dateien in einem verzeichnis enthalten sind
die mit doc.write in eine externe datei auszugeben und dann innerhalb der datei prüfen lassen, ob die geuschte datei vorhanden ist...
(wie ich das anstellen kann weiß ich allerdings noch nicht... aber: wer suchet der findet, evtl auch ne lösung ;-) )
ich hatte als alternative auch überlegt,
einfach abzufragen welche dateien in einem verzeichnis enthalten sind
die mit doc.write in eine externe datei auszugeben und dann innerhalb der datei prüfen lassen, ob die geuschte datei vorhanden ist...
Du kannst mit JS nicht prüfen ob eine Datei vorhanden ist und noch weniger kannst du mit JS eine Datei erzeugen. Das was EKKI vorschlägt, ist mittels einem XMLHttpRequest versuchen die Resource abzufragen und dann den Fehler dort abzufangen.
Struppi.
Hallo,
Du kannst mit JS nicht prüfen ob eine Datei auf dem server existiert oder nicht.
Jein ... mach einen HTTP-Request (z.B. mittels AJAX) auf die entsprechende URL, werte die Rückgabe aus und Du hast zumindest die Information, ob Du Zugriff auf die entsprechende Ressource hast ... ;-)
das kann aber nur in einem HTTP-Umfeld funktionieren. Soweit ich den OP verstanden habe, greift er aber in seinem Intranet gar nicht mit HTTP auf seinen Server zu, sondern über ein Netzwerk-Dateisystem. Und dann wär's Essig mit dem Ajax. ;-)
Dann hätte ich als allerletzte Möglichkeit nur noch, die Datei probehalber in ein (unsichtbares) iframe zu laden und nach angemessener Wartezeit den Inhalt dieses iframes zu kontrollieren.
Das setzt aber wiederum voraus, dass es sich um eine Datei handelt, deren Inhalt der Browser selbst darstellen kann (vorzugsweise HTML), da sonst die Öffnen/Speichern-Abfrage aufpoppt.
So long,
Martin
Hallo,
auch wenn es zu deinem eigentlichen Problem (zumindest unter den genannten Bedingungen) vermutlich keine Lösung gibt, ein wenig Grundsätzliches:
var variable010 = window.location.pathname;
variable012 = variable010.split("/");
Benutze aussagekräftige Variablennamen! Solche Namen wie in deinem Code sind nichtssagend und erleichtern nicht gerade das Verstehen.
variable000 = variable012[0];
variable100 = variable012[1];
variable200 = variable012[2];
variable300 = variable012[3];
variable400 = variable012[4];
variable500 = variable012[5];
variable600 = variable012[6];
Warum kopierst du die Werte hier in einzelne Variablen um? Sei doch froh, dass du sie so bequem geordnet in einem Array hast!
alert(variable500); <!-- Ausgabe: falls.html //-->
HTML-Kommentare haben in Javascript nichts verloren und sind in diesem Kontext schlicht falsch! Kommentare in Javascript werden /* entweder so */ geschrieben, alternativ kannst du mit "//" einen Kommentar beginnen, der automatisch bis zum Ende der Zeile geht.
<!-- function prüfen (){ //-->
<!-- if (pfad+var01 != false) //-->
Du greifst aus einer Funktion auf globale Variablen zu. Das ist nicht schön. Übergib die Variablen doch als Parameter, dann wird die Funktion etwas universeller einsetzbar. Wenn du dann das Ergebnis noch mit return zurückgibst, anstatt es direkt mit alert() rauszuhauen, dann hast du die Ein/Ausgabe sauber von der Logik getrennt.
<!-- if (pfad+var01 != false) //-->
<!-- if (pfad+var01 == true) //-->
Was meinst du damit? Was versprichst du dir davon, Stringvariablen auf true oder false zu prüfen? Irgendwie unsinnig. Davon abgesehen ergeben diese beiden Abfragen, selbst *wenn* pfad+var01 ein boolscher Ausdruck wäre, genau dasselbe Ergebnis.
<!-- if (location.search(dahin) == true) //-->
Nanu? location.search ist ein String, keine Funktion.
<!-- var info = window.location.href("richtig.html"); //-->
<!-- var info = window.location.href("falsch.html") //-->
location.href ebenfalls!
Ich fürchte, du musst dich noch sehr intensiv mit den Grundlagen der Sprache befassen, ehe du solche komplexen Aufgaben bewältigen kannst. Natürlich helfen wir gern dabei, aber du solltest wirklich versuchen, in kleinen Schritten vorzugehen. Sonst verläufst du dich in Details.
So long,
Martin