mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Mi 24.04.2024 10:05 Benutzername: Passwort: Auto-Login

Thema: JQuery Scroll.to funktioniert nicht in Firefox vom 11.02.2013


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> JQuery Scroll.to funktioniert nicht in Firefox
Seite: 1, 2  Weiter
Autor Nachricht
missmultitasking
Threadersteller

Dabei seit: 11.02.2013
Ort: Stuttgart
Alter: -
Geschlecht: -
Verfasst Mo 11.02.2013 21:06
Titel

JQuery Scroll.to funktioniert nicht in Firefox

Antworten mit Zitat Zum Seitenanfang

Hallo Allerseits,
ich versuche nun seit diversen Stunden das Scroll.to-Script von Ariel Flesler (http://flesler.blogspot.de/2007/10/jqueryscrollto.html) in meine Seite einzubauen.
Problem ist, dass ich sein Tutorial nicht kapiere, weil meine JQuery-Kenntnisse dafür wohl[/code] entwas zu rudimentär sind. Ich versteh nicht, wie er das Script einbindet. Ich hab also weiter im Netz gesucht und eine Lösung dafür gefunden, aber die funktioniert nur in Chrome und Safari aber nicht in Firefox (IE konnt ich leider noch garnicht testen... Menno!). Ich hab auch schon andere, leicht verständlichere Tutorials gefunden, aber die binden dann immer entweder horizontale oder vertikale Scroller ein, ich will aber quer über die Seite scrollen. Ich häng mal meinen Code hier rein und es wäre toll, falls mir irgendjemand sagen kann, warum der Firefox das nicht scrollen will (also die Links funktionieren, aber das Script scheint nicht richtig angesprochen zu werden).

Vielen dollen Dank für jedwede Hilfe...

PS: Falls jemand ein anderes Tutorial kennt, auf dem die Einbindung eines Multidirection-Scrolls gut beschrieben ist würde das natürlich auch reichen... Lächel

Und hier der Code:

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Unbenanntes Dokument</title>
<!-- Load jQuery -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
 
<!-- Load ScrollTo -->
<script type="text/javascript" src="http://flesler-plugins.googlecode.com/files/jquery.scrollTo-1.4.2-min.js"></script>

<style type="text/css">
#navi {
   background-color: #CC0;
   height: 200px;
   width: 300px;
   position: fixed;
   z-index: 99;
}
#sec_impressum {
   background-color: #FF9;
   height: 500px;
   width: 400px;
   position: absolute;
   top: 1417px;
   left: 488px;
}
#sec_grafik {
   background-color: #69F;
   height: 600px;
   width: 400px;
   position: absolute;
   left: 11px;
   top: 246px;
}
#wrapper {
   height: 2000px;
   width: 2000px;
}
#sec_mode {
   background-color: #F96;
   position: absolute;
   left: 1574px;
   top: 885px;
   height: 500px;
   width: 400px;
}
</style>


<!-- javascript that will initiate jQuery and the LocalScroll plugin -->
   <script>
   
   // When the document is loaded...
    $(document).ready(function()
   {
      // Add a click event to the links inside the #nav div
      $("#navi a").click(function(e)
      {
         // Prevent the default behavior of the anchor links
         event.preventDefault();
         
         // Get the "href" attribute from the links and store it in a variable
         var boxId = $(this).attr("href");
         
         // Scroll to the box that corresponds with the link we just clicked on.
         $.scrollTo( boxId , 600);
      });      

   });
   </script>

</head>

<body>
<div id="wrapper">
<div id="navi">
  <p><a href="#sec_grafik">Grafik</a></p>
  <p><a href="#sec_mode">Mode</a></p>
  <p><a href="#sec_impressum">Impressum</a></p>
</div>
<div id="sec_grafik">Raum für den Inhalt von  id "sec_grafik"</div>
<div id="sec_mode">Raum für den Inhalt von  id "sec_mode"</div>
<div id="sec_impressum">Raum für den Inhalt von  id "sec_impressum"</div>
</div>
</body>
</html>
  View user's profile Private Nachricht senden
labrar

Dabei seit: 04.04.2006
Ort: -
Alter: 49
Geschlecht: Männlich
Verfasst Mo 11.02.2013 22:50
Titel

Antworten mit Zitat Zum Seitenanfang

Bitte schön
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Unbenanntes Dokument</title>
<!-- Load jQuery -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
 
<!-- Load ScrollTo -->
<script type="text/javascript" src="http://flesler-plugins.googlecode.com/files/jquery.scrollTo-1.4.2-min.js"></script>

<style type="text/css">
#navi {
   background-color: #CC0;
   height: 200px;
   width: 300px;
   position: fixed;
   z-index: 99;
}
#sec_impressum {
   background-color: #FF9;
   height: 500px;
   width: 400px;
   position: absolute;
   top: 1417px;
   left: 488px;
}
#sec_grafik {
   background-color: #69F;
   height: 600px;
   width: 400px;
   position: absolute;
   left: 11px;
   top: 246px;
}
#wrapper {
   height: 2000px;
   width: 2000px;
}
#sec_mode {
   background-color: #F96;
   position: absolute;
   left: 1574px;
   top: 885px;
   height: 500px;
   width: 400px;
}
</style>


<!-- javascript that will initiate jQuery and the LocalScroll plugin -->
   <script>
   
   // When the document is loaded...
    $(document).ready(function()
   {
      // Add a click event to the links inside the #nav div
      $("#navi a").click(function(e)
      {
     if(!e){e=window.event;}
         // Prevent the default behavior of the anchor links
         e.preventDefault();
         
         // Get the "href" attribute from the links and store it in a variable
         var boxId = $(this).attr("href");
         
         // Scroll to the box that corresponds with the link we just clicked on.
         $.scrollTo( boxId , 600);
      });     

   });
   </script>

</head>

<body>
<div id="wrapper">
<div id="navi">
  <p><a href="#sec_grafik">Grafik</a></p>
  <p><a href="#sec_mode">Mode</a></p>
  <p><a href="#sec_impressum">Impressum</a></p>
</div>
<div id="sec_grafik">Raum für den Inhalt von  id "sec_grafik"</div>
<div id="sec_mode">Raum für den Inhalt von  id "sec_mode"</div>
<div id="sec_impressum">Raum für den Inhalt von  id "sec_impressum"</div>
</div>
</body>
</html>


Abgesehen davon ist Jquery WÜRG

EDIT der Richtigkeithalber

Warum es nicht ging war folgender Fehler im Codeabschnitt von dir
Code:
 $("#navi a").click(function(e)
      {
         // Prevent the default behavior of the anchor links
         event.preventDefault();
         
         // Get the "href" attribute from the links and store it in a variable
         var boxId = $(this).attr("href");
         
         // Scroll to the box that corresponds with the link we just clicked on.
         $.scrollTo( boxId , 600);
      });     


Wie du siehst, versucht die CLICK Funktion den Eventhandler über das Attribut "e" aufzurufen.
Code:
function(e)


Du aber versuchst dann plötzlich den evenet Handler über "event" anzusprechen.
Code:
[b]event[/b].preventDefault();


Was logischerweise nicht gehen kann. Da event, auch wenn es sich hierbei um eine Systemvariable handelt die eigentlich genau das tut, event durch e überschrieben wurde. evenet ist nur ein Platzhalter. Oder sagen wir einfach eine vordefinierte Variable. event funktioniert aber nur im Zusammenhang mit einem Funktionsaufruf.
Wenn der Funktionsaufruf aber bereits einen Eventhandler, in dem Fall e, mitbringt, dient event nur noch als Backup, falls e fehlschlägt.
Und auch dann benötigt event eine disovary dependencies. Also zB. window.event.
Deswegen ja noch der Zusatz meinerseits im neuen Code, falls e fehlschlägt.


Zuletzt bearbeitet von labrar am Mo 11.02.2013 23:01, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Anzeige
Anzeige
pantonine

Dabei seit: 03.03.2011
Ort: gehen Sie bitte weiter…
Alter: -
Geschlecht: -
Verfasst Mo 11.02.2013 22:52
Titel

Antworten mit Zitat Zum Seitenanfang

Was genau soll denn passieren? Also bei mit läuft der Code. Click auf einen Link springt/scrollt den Container an.
  View user's profile Private Nachricht senden
labrar

Dabei seit: 04.04.2006
Ort: -
Alter: 49
Geschlecht: Männlich
Verfasst Mo 11.02.2013 23:07
Titel

Antworten mit Zitat Zum Seitenanfang

Sorry kanns durch die neue Antwort nicht mehr editieren.
An den Threadstarter.

Code:
.preventDefault();

Du weißt schon, dass preventDefault nur für Mobil Geräte Sinn macht.
Wenn deine Intension in die Richtung geht, solltest du dringendst von Jquery weg.
  View user's profile Private Nachricht senden
pantonine

Dabei seit: 03.03.2011
Ort: gehen Sie bitte weiter…
Alter: -
Geschlecht: -
Verfasst Mo 11.02.2013 23:48
Titel

Antworten mit Zitat Zum Seitenanfang

Ach so sollte das aussehen.

Zitat:
Wie du siehst, versucht die CLICK Funktion den Eventhandler über das Attribut "e" aufzurufen.
Code:
function(e)


Du aber versuchst dann plötzlich den evenet Handler über "event" anzusprechen.
Code:
event.preventDefault();


Was logischerweise nicht gehen kann. Da event, auch wenn es sich hierbei um eine Systemvariable handelt die eigentlich genau das tut, event durch e überschrieben wurde. evenet ist nur ein Platzhalter. Oder sagen wir einfach eine vordefinierte Variable. event funktioniert aber nur im Zusammenhang mit einem Funktionsaufruf.
Wenn der Funktionsaufruf aber bereits einen Eventhandler, in dem Fall e, mitbringt, dient event nur noch als Backup, falls e fehlschlägt.
Und auch dann benötigt event eine disovary dependencies. Also zB. window.event.
Deswegen ja noch der Zusatz meinerseits im neuen Code, falls e fehlschlägt.
Ehrlich gesagt ist das sehr schlecht erklärt.
1. click versucht überhaupt nicht, den event-Handler aufzurufen. Klick wird onClick aufgerufen mit einer anonymen Callbackfunktion als Parameter. Jene wiederum besitzt einen Parameter (alle Event-Callbacks erwarten per Definition das durch das Even erzeugte Event-Objekt als Parameter bzw. bekommen dies bei Aufruf übergeben. Die übergabe wird an die genannte Variable gebunden - wenn denn spezifiziert, in diesem Fall "e". (windows).event ist noch eine ganz andere Geschichte, die man aber vernachlässigen sollte, wenn man schon jQuery verwendet. Weil: browserspezifisch und damit nicht browserübergreifend vorhanden. Das zu vereinheitlichen ist die Leistung von jQuery.
2. preventDefault mach nicht nur für Mobilgeräte Sinn. Wenn man - wie man es tun sollte - statt Anker echte URLs in Link angibt, verhindert preventDefault eben den entsprechenden Request. Im konkreten Fall sind die Anker ok, da ja tatsächlich ein Ziel angesprungen werden soll.


[edit]
Zitat:
Wenn deine Intension in die Richtung geht, solltest du dringendst von Jquery weg.

Zitat:
Abgesehen davon ist Jquery WÜRG

Ohne nähere Begründung behalt Deine Meinung doch einfach für Dich.

[edit2]
Zitat:
if(!e){e=window.event;}
Genau das erledigt jQ bereits. Keine Ahnung, wozu das hier jetzt gut sein soll.

Zuletzt bearbeitet von pantonine am Mo 11.02.2013 23:52, insgesamt 3-mal bearbeitet
  View user's profile Private Nachricht senden
labrar

Dabei seit: 04.04.2006
Ort: -
Alter: 49
Geschlecht: Männlich
Verfasst Di 12.02.2013 00:35
Titel

Antworten mit Zitat Zum Seitenanfang

Ich bin wirklich doof. Ich schreibe hier einen Roman warum nicht JQuery, nur um dann festzustellen, dass ich das aufgrund deines Satzes
"Ohne nähere Begründung behalt Deine Meinung doch einfach für Dich. "
geschrieben habe. Also habe ich den Roman wieder entfernt und stelle jetzt eine Gegenfrage.
Isst du gelben Schnee? Natürlich nicht. Wenn ich dich jetzt aber nach einer Medizinischen Begründung für deine Abneigung fragen würde, würdest du das ganze in drei Sätzen für dich begründen. Ein Arzt kann dir aber 1000 Gegenargumente bringen.
Also belassen wir es einfach dabei, da wir schließlich Meininungsfreiheit haben, ich mag JQ nicht (bzw. Nicht mehr)

Bezüglich meiner schlechten Erklärung. Ja da stimme ich dir zu. Jetzt beim nochmaligen Lesen, hätte ich es doch anders formulieren sollen. Andererseits (und das geht jetzt nicht negativ gegen den Threadersteller) weiß ich nicht ob dieser Faux Pax passiert wäre wenn etwas Hintergrundwissen in der Thematik vorhanden ist. Also gehe ich schlicht davon aus, Code gesehen, Code kopiert und Code für die eigenen Zwecke etwas angepasst.

Also gehe ich davon aus, dass er weder meine misserable, noch deine bessere Erklärung zum Thema Eventhandler verstanden hat. Da hierfür doch etwas mehr nötig ist als ein paar lapidare Sätze. Stimmts du mir soweit zu?

Und was prevent anbelangt muss ich zumindest für mich sagen, dass ich beim Browsen über ein nicht mobiles Gerät schon gerne die volle Kontrolle habe. Auch wenn du das für dich als Benutzerfreundlicher ansiehst, sehe ich eventblocker eher als Gängelei an.

Anders aber bei mobilen Geräten. Da geht es ohne gar nicht. Was aber ein anderes Thema ist, da es hier auch um pinch und double piches geht die die Darstellung einer Seite tatsächlich sehr beinflussen, bzw. die Steuerung erschweren können.
Solange ich am PC aber nur einen Mauszeiger habe finde ich, sollten andere Möglichkeiten gefunden werden.
Ist aber nur meine Meinung Lächel


Zuletzt bearbeitet von labrar am Di 12.02.2013 00:55, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
missmultitasking
Threadersteller

Dabei seit: 11.02.2013
Ort: Stuttgart
Alter: -
Geschlecht: -
Verfasst Di 12.02.2013 01:12
Titel

Antworten mit Zitat Zum Seitenanfang

Puh...äh... na erst mal Danke für den Einsatz.... ich probier morgen mal aus, was ich davon kapiere...
Sorry... ich bin wirklich ziemlich unbedarft, aber ich hätt halt trotzdem gern so n Scroller... Glaskugel
Eine Frage noch, labrar (auch, wenn du natürlich keine Romane schreiben musst.... vielleicht geht's ja auch n bisschen "zusammengefasst"?):
Was wäre denn dann die bessere Alternative zu JQuery?

Merci, merci
  View user's profile Private Nachricht senden
labrar

Dabei seit: 04.04.2006
Ort: -
Alter: 49
Geschlecht: Männlich
Verfasst Di 12.02.2013 02:00
Titel

Antworten mit Zitat Zum Seitenanfang

Was eigenes machen. Ich möchte jetzt keine Eigenwerbung für meine eigene Lib machen, deswegen würde ich dir empfehlen mal nach JStween zu googlen.
Wenn du mir eine PN schreibst, schicke ich dir aber einen Link zu meiner Lib + ein paar Beispielen.
Ich kann dir aber kein Tut über den ganzen Funktionsumfang schreiben, da das den Rahmen sprengen würde. Aber für dich wäre die Funktion animate ganz interessant. "Und ich hör sie schon. Animate?? So heißt doch die bei JQ auch?" Ja. Deshalb. Ich habe selbst Jahre lang mit JQ gearbeitet. Aber mit Ausnahme des Nahmens haben JQ und meine Lib nichts gemeinsam Lächel

Edit: Vergiss JStween. Funzt mittlerweile auch über Jquery. Obwohlm ich das damals besser fand und auch heute noch finde. Aber das ist eben der Strom. JQ kennt jeder und somit kommt auch keiner daran vorbei. Genauso wie Typo. Jeder kennts, jeder wills haben weils jeder hat. Qualität ist dabei Nebensache. Ich gugg mal ob ich die alte JStweenklasse ohne JQ finde.

Ups: Nochmal Edit. Hieß nie JStween. Dafür aber Motion Tween
http://jstween.blogspot.de/#Tween

Das ganze basiert auf den alten AS2 Klassen. Die ganezn Animationen die JQ bietet gibt es da besser und performanter.
[/code]

Nochmal Edit: Lächel

Du kommst aus Stuttgart?
Ich aus LB. No wünsch i dr a baar nädde grieas noch schduuagard


Zuletzt bearbeitet von labrar am Di 12.02.2013 02:13, insgesamt 4-mal bearbeitet
  View user's profile Private Nachricht senden
 
Ähnliche Themen Problem mit Scroll sticking - jquery
Scroll-Rad-Funktion in Firefox ausschalten
JavaScript Scroll-Container in Firefox
Korrekte Scroll-Leiste in Firefox
Wie funktioniert der "Scroll-Effekt" auf der Apple Webseite?
jquery bibliothek funktioniert nicht
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.