zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden JS-Funktion arbeitet nach Auslagerung in externe Datei nicht mehr

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 14.06.2012, 14:36
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 15.05.2012
Ort: Zwischen den Meeren
Beiträge: 16
Vampy befindet sich auf einem aufstrebenden Ast
Standard JS-Funktion arbeitet nach Auslagerung in externe Datei nicht mehr

Heyho,

ich möchte eine eigene Seite zur Behandlung eines HTTP 404 Fehlers im Look einer "Guru Meditation" erstellen. Das ganze soll dann in etwa so aussehen (nur mit anderem Text):



Da ich nichts gefunden habe, wie man den Rahmen per CSS zum Blinken bringt, habe ich mit Javascript gearbeitet.

Code:
<script type="text/javascript">
show = true;
window.setInterval("LocalBlinkBorder()",1000);
function LocalBlinkBorder () {
    if (show == true) {
        document.getElementById("error").style.borderStyle = "hidden";
        document.getElementById("error").style.padding = "10px";
        show = false;
    } else {
        document.getElementById("error").style.borderStyle = "solid";
        document.getElementById("error").style.padding = "0px";
        show = true;
    }
}
</script>
Dieser Code arbeitet zufriedenstellend. Da ich ihn aber auch an anderer Stelle benutzen möchte (für HTTP 403 und ggf. noch weitere), wollte ich den ganzen <script>-Bereich möglichst komplett in eine externe Datei auslagern.

Der Aufruf sollte dann so aussehen:
Code:
<script type="text/javascript">
BorderControl();
</script>
Die zugehörige externe Datei sieht so aus:
Code:
function BorderControl() {
    gboShowBorder = true;
    window.setInterval("BlinkBorder",1000);
}

function BlinkBorder () {
    if (gboShowBorder == true) {
        document.getElementById("error").style.borderStyle = "hidden";
        document.getElementById("error").style.padding = "10px";
        gboShowBorder = false;
    } else {
        document.getElementById("error").style.borderStyle = "solid";
        document.getElementById("error").style.padding = "0px";
        gboShowBorder = true;
    }
}
In dieser Variante versagt der Code allerdings seinen Dienst, der Rahmen bleibt permanent sichtbar. Meine Vermutung ist, daß die Variable "gboShowBorder" aus der Funktion "BorderControl" nur innerhalb dieser Funktion gültig ist und deshalb in "BlinkBorder" stets in der else-Zweig der If-Anweisung durchlaufen wird. Andererseits sind Variablen, die nicht mit var deklariert wurden doch global gültig? Oder sehe ich das falsch?

Tante Edit sagt:
Im <head> habe ich natürlich die externe Datei per <script src="/bin/error.js" type="text/javascript" /> eingebunden.

Geändert von Vampy (14.06.2012 um 14:44 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 14.06.2012, 14:40
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Erstmal würde ich einen Blick in die Fehlerkonsole werfen und dann nachschauen,
Zitat:
Zitat von Vampy Beitrag anzeigen
Tante Edit sagt:
Im <head> habe ich natürlich die externe Datei per <script src="/bin/error.js" type="text/javascript" /> eingebunden.
ob die Datei wirklich an diesem Ort existiert.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 14.06.2012, 14:42
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 15.05.2012
Ort: Zwischen den Meeren
Beiträge: 16
Vampy befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
Erstmal würde ich einen Blick in die Fehlerkonsole werfen und dann nachschauen, ob die Datei wirklich an diesem Ort existiert.
Das kann ich positiv beantworten. Die Datei existiert am angegebenen Ort. Baue ich bsp. ein einfaches alert ein, wird das ausgeführt.
Mit Zitat antworten
  #4 (permalink)  
Alt 14.06.2012, 14:45
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Vampy Beitrag anzeigen
Das kann ich positiv beantworten. Die Datei existiert am angegebenen Ort. Baue ich bsp. ein einfaches alert ein, wird das ausgeführt.
Gut. Dann hilft der Blick in die Fehlerkonsole vielleicht weiter.
Mit Zitat antworten
  #5 (permalink)  
Alt 14.06.2012, 14:46
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 15.05.2012
Ort: Zwischen den Meeren
Beiträge: 16
Vampy befindet sich auf einem aufstrebenden Ast
Standard

Nicht wirklich. Die Fehlerkonsole von SeaMonkey schweigt sich dazu aus. Keine Fehler, keine Warnungen.
Mit Zitat antworten
  #6 (permalink)  
Alt 14.06.2012, 14:48
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 15.05.2012
Ort: Zwischen den Meeren
Beiträge: 16
Vampy befindet sich auf einem aufstrebenden Ast
Standard

Übrigens, das Beispiel kann live nachvollzogen werden unter 404 Not Found. Die automatische Weiterleitung ist zwecks Debugging deaktiviert.
Mit Zitat antworten
  #7 (permalink)  
Alt 14.06.2012, 15:36
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Vampy Beitrag anzeigen
Nicht wirklich. Die Fehlerkonsole von SeaMonkey schweigt sich dazu aus. Keine Fehler, keine Warnungen.
Dann können wir dir nicht mehr weiterhelfen.

Die Beispiel URL ist nicht erreichbar.
Mit Zitat antworten
  #8 (permalink)  
Alt 14.06.2012, 16:37
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 15.05.2012
Ort: Zwischen den Meeren
Beiträge: 16
Vampy befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
Die Beispiel URL ist nicht erreichbar.
Ähm, das sollte definitiv nicht so sein. Gibt es irgendeine Fehlermeldung, oder etwas ähnliches, warum die URL nicht erreichbar ist?
Mit Zitat antworten
  #9 (permalink)  
Alt 14.06.2012, 17:09
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Eben ging's nicht, jetzt geht's und ich kriege eine Fehlermeldung in der Fehlerkonsole
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 14.06.2012, 18:13
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 15.05.2012
Ort: Zwischen den Meeren
Beiträge: 16
Vampy befindet sich auf einem aufstrebenden Ast
Standard

Ja, das kann sein. Ich hatte versucht, das Problem in den Griff zu bekommen und eine geänderte Version hochgeladen, in der gboShowBorder nicht definiert war

Inzwischen hab ich es hinbekommen und zwar indem ich den Code aus der Funktion "BorderControl" entfernt und direkt in die aufrufende HTML-Seite geschrieben habe.

HTML-Code:
<script type="text/javascript">
    gboShowBorder = true;
    window.setInterval("BlinkBorder()",1000);
</script>
Allerdings weiß ich nicht, warum das jetzt funktioniert und der andere Ansatz nicht. Ich vermute mal, daß "BorderControl" zwar aufgerufen aber unmittelbar nach setInterval beendet wird. Das würde erklären, warum "BlinkBorder" mindestens einmal aufgerufen wird, der Rahmen aber trotzdem nicht blinkt.

Frage:
Wie kann man sowas vernünftig debuggen? Gibt es so etwas wie einen Step-by-Step Debugger, der beim Laden der Seite aufgerufen wird und bei dem man jeden einzelnen Ausführungsschritt beobachten kann?
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
externe datei in ein div einbetten luki.boy (X)HTML 7 30.09.2010 18:26
externe CSS Datei in HTML einbinden simsam CSS 5 15.03.2010 21:19
[PHP] Funktion zum Optimieren von CSS Floele Serveradministration und serverseitige Scripte 2 13.08.2005 11:31
Externe CSS Datei für Handy+PDA heinz CSS 0 27.05.2004 04:00
Externe Datei halid CSS 2 04.09.2003 16:59


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:16 Uhr.