24. september 2001 - 12:43Der er
11 kommentarer og 2 løsninger
Check om et link eksisterer
Jeg har brug for at checke om en bestemt .HTML-fil kan loades og i så fald åbne den i et popup vindue. Hvis filen ikke kan loades, skal der ingenting ske. Det er vigtigt, at det fungerer både under IE og Netscape.
Kan du fortælle lidt om de mulige årsager til at den .html fil nogen gange ikke kan loades.
Hvis det er serveren der ofte er nede, er det rimelig nemt. læg et lille .gif billede i samme mappe som filen og indsæt nedenstående script i head af den fil der skal vide om html filen kan nås:
<script language=\'javascript\'> <!--
var tstImg = new Image(); tstImg.src = \"dit_testbillede.gif\"; // et billede i samme mappe som den fil vil // vide om vi kan linke til var teller = 20; function testDet() { if ( teller-- > 0 ) { // prøver 20 gange if ( tstImg.complete ) { // billedet hentet. filen kan nås. Hurra window.open( \"dinpopop.html\", \"vinduenavn\" ); } else { setTimeout( \"testDet()\", 300 ); // prøver 20*300ms = 6 sekunder før vi opgiver } } }; //end testDet()
Det skal bruges til at man en site-administrator kan lægge en html-fil på et bestemt sted, som så kun bliver kaldt, hvis den findes. Forestil dig en portal hvor man på en bestemt dag skal få en særlig information frem i et popup-vindue.
Jeg har desværre ikke mulighed for at bruge din image-baserede løsning; det skal være en html-fil, der checkes for.
Men hvorfor kan du ikke fortælle site-admin\'en at der skal lægges sådan et lille billede med over når han poster ny .html side og at det skal fjernes igen når siden ikke gælder mere?
Fra serverside er det til gengæld grumme nemt, der kan du teste (med PHP eller ASP) om den side findes og så generere en lidt anderledes html-fil med linket hvis den gør.
<ole> Så er det vel med noget back-end og database - og så er det jo bare at anføre i DB\'en, at filen eksisterer. Ellers kan du jo lægge en onload-handler i det dokumentet, du vil loade. Dokumentet loades så i en skjult frame og der sættes en variabel af onload-kaldet. Det kunne f.eks. være variablen \'isFound\', der oprindelig er sat til \'false\'. På onload bliver den sat til \'true\'. Så er det blot at spørge:
<?php if ( file_exists( \"nyhedsfilen.html\" ) ) { echo \"<script language=\'javascript\'>\\n\" echo \" window.open( \'hyhedsfilen.html\', \'vinduenavn\' );\\n\" echo \"</script>\\n\" ?> placeres et sted i head
Jeg har ikke mulighed for at bruge serverside script, desværre. Men jeg fandt frem til en \"pseudo-løsning\", som måske kan give anledning til yderligere kommentarer.
Ideen er at oprettet en usynlig iframe med denm pågældende .HTML-fil som indhold, og så checke, om den er loaded ved at kigge på overskriften... Jep, selvfølgelig virker det kun med en engelsk udgave af IE, og det er ikke godt nok:
<html> <script language=\"JavaScript\"> document.write(\'<FORM NAME = \"testLink\"><INPUT TYPE = \"HIDDEN\" NAME = \"link\" VALUE = \"The Link Named: \" SIZE = 40><INPUT TYPE = \"hidden\" NAME = \"testValue\"></FORM>\'); document.write(\'<IFRAME NAME = \"newFrame\" HEIGHT = 0 WIDTH = 0></IFRAME>\'); var timeCheck, thisLink, openLink=\'test2.html\';
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.