kostenloser Webspace werbefrei: lima-city


JS-Klasse in Datei auslagern

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Hi, ich habe diesen Code in einer externen JS-Datei stehen (habe gerade erst angefangen):
    function Mouseposition()
    {
    	// properties
    	this.posX = 0;
    	this.posY = 0;
    	
    	
    	// methods
    	this.startDragging = function startDragging(e) {
    		this.posX = document.all ? window.event.clientX : e.pageX;
    		this.posY = document.all ? window.event.clientY : e.pageY;
    	};
    	
    	this.stopDragging = function startDragging() {
    			alert("war hier");
    	};
    }
    
    
    // build objects
    var mouseposition = new Mouseposition();
    
    // working part
    document.onmousemove = mouseposition.startDragging;
    document.onmouseup = mouseposition.stopDragging;
    
    mouseposition.stopDragging();
    So weit, so gut. Das funktioniert und in der Fehlerkonsole (des FF) wird nichts ausgegeben.

    Wenn ich nun aber die Klasse Mouseposition auslagere, d.h. den Inhalt der o.g. Datei auf
    // build objects
    var mouseposition = new Mouseposition();
    
    // working part
    document.onmousemove = mouseposition.startDragging;
    document.onmouseup = mouseposition.stopDragging;
    
    mouseposition.stopDragging();
    reduziere und eine weitere Datei mit dem Code
    function Mouseposition()
    {
    	// properties
    	this.posX = 0;
    	this.posY = 0;
    	
    	
    	// methods
    	this.startDragging = function startDragging(e) {
    		this.posX = document.all ? window.event.clientX : e.pageX;
    		this.posY = document.all ? window.event.clientY : e.pageY;
    	};
    	
    	this.stopDragging = function startDragging() {
    			alert("war hier");
    	};
    }
    anlege, dann funktioniert es schon nicht mehr. Ich bekomme in der Fehlerkonsole "Mouseposition is not defined" für Zeile 2 der ersten Datei ausgegeben und das, obwohl ich im HTML-Dokument die zweite Datei vor der ersten Datei einbinde. Auch, wenn ich das, das die erste Datei macht, erst onload ausführe, wird der Fehler geworfen.

    Ich könnte zwar alles in eine Datei schreiben, allerdings fände ich das sehr unübersichtlich. Gibt es eine bessere Möglichkeit?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. anti-atomkraft

    Kostenloser Webspace von anti-atomkraft

    anti-atomkraft hat kostenlosen Webspace.

    das-koenigreich schrieb:Auch, wenn ich das, das die erste Datei macht, erst onload ausführe, wird der Fehler geworfen.

    Wie denn genau? Die sicherste Variante wäre:
    window.onload = function(){
    if(function_exists('Mouseposition')){
    // build objects
    var mouseposition = new Mouseposition();
    
    // working part
    document.onmousemove = mouseposition.startDragging;
    document.onmouseup = mouseposition.stopDragging;
    
    mouseposition.stopDragging(); }
    else { alert('Funktion existiert nicht!'); }  };

    Die if-else-Abfrage erstmal nur zum Testen...

    Beitrag zuletzt geändert: 3.4.2012 20:23:02 von anti-atomkraft
  4. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Hallo,
    function_exists() gibt es gar nicht. Ich habe die Zeile
    if(function_exists('Mouseposition')){
    darum durch die Zeile
    if(typeof Mouseposition == 'function'){
    ersetzt. Danach wurde ausgegeben, dass die Funktion nicht existiere. Nachdem ich den ausgelagerten Teil vor den Code in die selbe Datei kopiert habe, wurde diese Meldung nicht mehr ausgeben und das Script funktionierte, d.h. grundsätzlich funktioniert die Abfrage, ob die Klasse existiert.


    Edit: Der Chromium spuckt für Zeile 2, also für
    var mouseposition = new Mouseposition();
    , die Fehlermeldung
    Uncaught ReferenceError: Mouseposition is not defined
    aus.


    Edit2: Ich habe gerade den bisherigen Inhalt der Datei, in der das Objekt gebaut wird, in eine Funktion verpackt und diese mit einer Sekunde Verzögerung aufgerufen. Nach einer Sekunde Verzögerung erschien auch der Fehler in der Fehlerkonsole des FF.

    Beitrag zuletzt geändert: 3.4.2012 21:57:59 von das-koenigreich
  5. anti-atomkraft

    Kostenloser Webspace von anti-atomkraft

    anti-atomkraft hat kostenlosen Webspace.

    das-koenigreich schrieb:
    function_exists() gibt es gar nicht

    :eek: Das hab' ich wohl mit PHP verwechselt. xD

    Hab' gerade mal eine Test-Datei erstellt und hier funktioniert bei mir alles...
    -> Sowohl in einer, wie in zwei externen Dateien
    -> Sowohl mit FireFox-Aurora, wie mit Chrome
    Von daher muss dein Problem irgendwo anders liegen. Kannst du 'nen Link posten?
  6. Eigentlich ist die einzige Möglichkeit, dass die Datei die du einbinden willst nicht existiert, vllt hast du dich ja vertippt, um das schnell und einfach zu überprüfen kannst du im Firefox Strg+U drücken um dir dern Quelltext anzeigen zu lassen und dann auf den link zu dem Script klicken.

    Mit freundlichen Grüßen
  7. t*****b

    Wichtig ist, dass du erst die "Klasse" einbindest und die Datei, in der die Klasse aufgerufen wird erst danach, da die Scripte in der Reihenfolge interpretiert werden, in der sie geschrieben/eingebunden wurden.
  8. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Ok, das ist jetzt sehr merkwürdig. Ich habe es einfach hochgeladen. Vom Lima-Server aus funktioniert alles. Lokal aber nicht. Beides habe ich sowohl an meinem Desktop-Rechner, als auch an meinem Laptop getestet und beide kamen zum gleichen Ergebnis.


    Edit: Das Problem ist gelöst. Ich habe den Dateinamen der ausgelagerten Klasse natürlich groß geschrieben, da Klassennamen immer groß geschrieben werden. Beim Einbinden in das HTML-Dokument habe ihn aber klein geschrieben.

    Nun ist da aber ziemlich viel passiert, das mir merkwürdig vorkommt: Nachdem ich die Dateien hochgeladen hatte, hat es funktioniert. Die Groß- und Kleinschreibung wurde einfach ignoriert. Als ich das HTML-Dokument von meiner Festplatte aus mit einem Doppelklick öffnete, war die Groß- und Kleinschreibung aber von Belang. Trotzdem konnte ich beim Klicken auf die Pfade in der Quellcodeansicht zu den JS-Dateien wechseln, obwohl eine von ihnen mit einem Großbuchstaben begann, der Pfad aber mit einem Kleinbuchstaben. Da war sie dem FF dann wieder egal. Erst jetzt, als ich das HTML-Dokument mit http://localhost/[...]/meinHtmlDokument.html geöffnet hatte (das Script funktionierte da auch nicht, d.h. da war die Groß- und Kleinschreibung wichtig) und die Quellcodeansicht öffnete, funktionierte die Verlinkung des einen Pfads nicht. Durch solche Sachen macht einem der Browser das Korrigieren von Fehlern echt schwer.

    Beitrag zuletzt geändert: 4.4.2012 15:42:02 von das-koenigreich
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!