socki: wie kann ich scrollen mit jquery im firefox umsetzen?

Moin,

weiß jemand warum mein Code im Firefox nicht funktioniert? Alle anderen Browser scrollen beim Laden der Seite wie gewünscht zum angegebenen Ziel.

  
<!DOCTYPE html>  
<html>  
<head>  
 <script src="//code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>  
</head>  
<body>  
<div id="einleitung" style="height:500px;">Einleitung</div>  
<div id="absatz" style="border:1px solid black; height:1000px;">Text</div>  
<script type="text/javascript"> 	  
	$(document).ready(function() {  
			event.preventDefault();  
			var ziel = "#absatz";  
			$('body, html').animate({scrollTop: $(ziel).offset().top}, 1200 );  
	});  
</script>  
  
</body>  
</html>  

Zumindest in meinem Firefox (aktuelle Version, abgesicherter Modus) passiert nix.

  1. Hallo,

    bei mir rechnen alle Browser beim Laden sehr lange und gescrollt wird in keinem (FF, IE, Chrome, Opera, alle aktuell).

    Hast du den Quelltext, den du uns hier vorsetzt, überhaupt mal selbst ausprobiert?

    Gruss

    MrMurphy

    1. Hast du den Quelltext, den du uns hier vorsetzt, überhaupt mal selbst ausprobiert?

      ja, 1:1. In Chrome und IE funktioniert's bei mir einwandfrei. In Firefox geht's inzwischen auch (wenn man die Zeile mit event.preventDefault() weglässt).

      1. Lieber socki,

        In Firefox geht's inzwischen auch (wenn man die Zeile mit event.preventDefault() weglässt).

        Du hast doch von molily erklärt bekommen, dass es im FF kein Objekt namens "event" an dieser Stelle gibt. Deswegen wirft der FF einen Fehler und steigt aus. Das kannst Du durch eine Objektabfrage vermeiden.

        Liebe Grüße,

        Felix Riesterer.

        --
        "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)
  2. Hallo,

    $(document).ready(function() {
    event.preventDefault();

    Ein Blick in die JavaScript-Konsole hätte geholfen:
    »ReferenceError: event is not defined«

    Lösche die Zeile mit event.preventDefault(). Es gibt kein globales event-Objekt in Firefox, das haben andere Browser aus IE-Kompatibilität. Und der Parameter, den die DOM-Ready-Handler-Funktion bekommt, ist nicht das Event-Objekt, sondern wieder die jQuery-Funktion (dieselbe wie in window.$, window.jQuery):

    $(document).ready(function($) {  
      // …  
    });
    

    Hier steckt zwar in neueren Browsern ein Event dahinter (DOMContentLoaded), aber es gibt keine Standardaktion, die du mit preventDefault unterdrücken könntest. Die Zeile ist also unnötig und wirkungslos.

    Mathias

    1. Lösche die Zeile mit event.preventDefault(). Es gibt kein globales event-Objekt in Firefox, das haben andere Browser aus IE-Kompatibilität.

      Hier steckt zwar in neueren Browsern ein Event dahinter (DOMContentLoaded), aber es gibt keine Standardaktion, die du mit preventDefault unterdrücken könntest. Die Zeile ist also unnötig und wirkungslos.

      Klasse, klappt einwandfrei. Da muss ich wohl zugeben, dass ich keine Ahnung von js habe und ein paar Codezeilen für meine Zwecke abgewandelt habe. Im Original ging es darum, animiertes Scrollen für das onclick Event einzurichten. Daher das preventDefault. Und danke für die Links und den Tipp mit der Console!