• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Position „merken“ wenn Seite neu lädt Content click

th_wolfgang

New member
Hallo,

wer kann mir dies hier bitte erläutern. Habe ein ähnliches Problem, mit meinem Content. Seite springt immer nach oben!
Jetzt habe ich mal LETZTER POST von hier: https://www.webmasterwork.com/board...lposition-merken-und-nach-Reload-hinspringen/ getestet.
Es so versucht einzubauen, stelle allerdings keinen Unterschied fest. Habe den JavaScript reingebastelt,, den Body-Eintrag vorgenommen und im CSS unter Content OnClick="scrollit();" Platziert.

Warum funktioniert dies nicht? Gibt es eine andere Lösung für das Positions-Problem?

Danke & LG
Wolf
 
Grüße Dich,

das kommt auf zwei Dinge an:
1. Deinen Anchor
2. was er lädt (async, neue Seite)

Vorweg: Die korrekte Schreibweise wäre "onclick".

Ich sehe besagtes "onclick" - solltest Du unter dem Attribut "href" ein "#" stehen haben, ist das ein normales Verhalten, da die "#" für interne Sprungmarken im Dokument verwendet werden.

Lösungsvorschlag: Wirf das "#" unter "href" raus (bspw. href="javascript:") oder verhindere die Ausführung; bspw. mit jQuery's preventDefault.

Tendenziell tippe ich auf 1 ... aber dafür müsstest Du Code zeigen (wie üblich). ;)

Grüße vom Kaffeebecherrand.
 
Hallo SteelWheel,

hatte bereits etwas „weitergelesen“. So habe ich mal dies versucht (Code von hier.)

Code:
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}


window.onload = function() {
	var yScroll = readCookie("scrollPos");
	if(yScroll)
		scrollTo(0, yScroll);
		
	window.onscroll = function() {
		var yScroll;
		if (self.pageYOffset) {
			yScroll = self.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
			yScroll = document.documentElement.scrollTop;
		} else if (document.body) {// all other Explorers
			yScroll = document.body.scrollTop;
		}
		createCookie("scrollPos", yScroll, 14)
	}
}

Der geht schon mal "ein wenig". Das Resultat ist allerdings noch nicht sehr zufriedenstellend. (Verspringt sich ab und zu.)

Das Problem war und ist lediglich, dass mein Header doch etwas hoch ist (iFrame mit Slider drin etc.) darunter kommt das Content. Dies wiederum ein Shopsystem beinhaltet. Wenn ein Kunde sich nun anmelden will, springt bei jedem „weiter“ die Seite an den Anfang, nach oben und man sieht die Einkaufs Routine nicht mehr und muss wieder ewig runterscrollen. Ich glaube, dass man eine bessere Möglichkeit finden kann um evtl. Kunden von vornherein abzuwürgen. Daher stört mich das ein wenig.

Wäre auch schön, wenn der Code dann gleich für die Mobile-Webseite funktionieren würde. Mache nur bis Tablet/iPod responsive, für Handys eine eigene separate Webseite.

Deine Lebkuchen schon alle weg? :)
Danke & LG
Wolf
 
Zuletzt bearbeitet:
Dann schau Dir bitte mal den Link an und wie dieser geschrieben ist - also das Attribut href; gerade wenn er immer wieder nach oben springt. Ich würde einen Lebkuchen wetten, dass Du href="#" im Source stehen hast - und zwar bei Deinem "weiter"-Button/Link ... ;)
 
Hallo SteelWheel,

ja, ich habe im Source ein href="#" allerdings bei der Navigation <a class="s-button s-collapse-trigger" href="#">+</a>, auch im Shopsystem habe ich ein paar drin, kann ich diese ohne Probleme mit href="javascript:" ersetzen? Würde dann mit dem Notepad++ alle Einträge im Code so überschreiben lassen, hoffe, dass der Shop dann noch funktioniert oder langt es in der Navie der Eintrag zu ersetzen.

Der als letztes getestete Code geht schon einmal, aber wie kann ich dem beibringen lediglich im / für das Content zu funktionieren, da wenn man z.B. im Footer einen Link anklickt, springt die Seite dann komplett zum Footer, so ist das dann auch nix.

NACHTRAG: Habe in der Nav den Part "#" ersetzt und das Script: http://api.jquery.com/event.preventdefault/ eingebaut. Leider keine Veränderung!

LG & Danke
Wolf
 
Zuletzt bearbeitet:
Wie ist denn jetzt der aktuelle Code und was genau das Problem?
Kannst du bitte auch ein Fiddle machen.
 
Hallo Micha,

guten Morgen

es geht um diesen Code:

Code:
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}


window.onload = function() {
	var yScroll = readCookie("scrollPos");
	if(yScroll)
		scrollTo(0, yScroll);
		
	window.onscroll = function() {
		var yScroll;
		if (self.pageYOffset) {
			yScroll = self.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
			yScroll = document.documentElement.scrollTop;
		} else if (document.body) {// all other Explorers
			yScroll = document.body.scrollTop;
		}
		createCookie("scrollPos", yScroll, 14)
	}
}

dieser funktioniert soweit, aber er soll nur im Div Content funktionieren und nicht auf der kompletten Seite, (Wenn man auf z.B. Footer-Links drückt, schraubt er mir alles wieder an die Footer-Position das soll so nicht sein.)
href="#" habe ich schon alle raus, dies hatte mein Problem allerdings nicht gelöst.

Natürlich bin ich auch offen für eine andere Lösung.

Danke & LG
Wolf
 
Hallo Micha,

wie meinst du da? stehe momentan auf dem Schlauch! Es geht darum, dass mein Content - Bestell-Routine immer an den Anfang der Webseite springt und man ewig nach unten Scrollen muss um sich als Kunde zu registrieren. Das Script macht dies, aber wie gesagt überall ich brauche lediglich für das Content eine Lösung.

Danke & LG
Wolf

- - - Aktualisiert - - -

NACHTRAG:

wie mir SteelWheel geraten hat, habe ich alle href="#" in href="javascript:" abgeändert. Auch habe ich folgendes Script eingebaut:

Code:
<script type="text/javascript">
$( "a" ).click(function( event ) {
event.preventDefault();
$( "<div>" )
.append( "default " + event.type + " prevented" )
.appendTo( "#log" );
});
</script>

dies bringt allerdings nicht den gewünschten Erfolg. So "brauche" ich eine andere Lösung evtl. mit dem Script oben, dies allerdings nur im Content laufen soll.
Momentan springt die Seite immer noch nach oben! :/
 
Warum springt es denn? Du musst ja entweder die Ursache beseitigen oder die Auswirkung kompensieren. Und um die Ursache zu finden geht man erstmal hin und schnappt sich den Effekt produzierenden Code und baut ihn in eine völlig isolierte HTML Datei ein, bis der Effekt auftritt. Und danach gehe man hin und reduziert den Code soweit, solange der Fehler noch zu sehen ist (was man dann gut als Fiddle einstellen kann). Dann hat man die Ursache und kann sich dazu was überlegen.
Aber einfach so in den Raum rein "mein Content springt" und auf Glück mal ein paar Sachen versuchen bringt ja niemanden weiter :)

Und so ganz nebenbei: mit dieser Strategie finde ich mittlerweile etwa 98 % der Bugs selbst und kann sie beheben. Hier fragen ist natürlich auch nett und immer willkommen! Aber selbst lösen geht schneller, weil man nicht auf Antwort warten muss :)
 
Hallo Micha,

danke, ich bin seit Tagen daran, den Fehler zu finden, er scheint aber „gut getarnt zu sein“. Bastele hierfür teilweise 15 Stunden am Tag rum und dies seit einer Woche. Als ich nicht mehr weitergekommen bin musste ich dies halt mal im Forum anschneiden, es kann ja sein, das genau dies Problem bereits jemand kennt und mir so einen Tipp geben kann, wie z.B. WeelSheel. An diesem Problem mit href lag es dann anscheint nicht, aber es war ein Ansatz den ich gar nicht erdachte. Man muss ja nicht immer „das Rad neu erfinden“. Am Anfang dachte ich an evtl. falsche Positionierung fixed, absolute / relative aber daran scheint es auch nicht zu liegen…

Auch brennt mich im Zuge dieses Themas, ob es allgemein Mo3eglich ist so einem JavaScript lediglich nur ein Div zuweisen zu können. Wenn dem so ist, könnte ich evtl. mein Problem damit einmal „unsauber“ lösen so wäre ich dann bereits online und kann in Ruhe nach dem Hauptproblem suchen.

LG und guten Rutsch 2015!
Wolf
 
Zuletzt bearbeitet:
Du musst selbst wissen, was du mit deiner Zeit machst, Wolfgang. Aber nach meiner Erfahrung hat sich die von mir beschriebene Vorgehensweise noch immer als die zeitsparendste und strukturierteste herausgestellt, auch wenn man das vielleicht anfangs nicht denkt und es einem lästig ist, den Code quasi nochmal Stück für Stück auf- bzw. abzubauen. Und wenn man am Ende den Fehler trotzdem nicht findet ist die Zeit ja nicht verschenkt, denn man hat dann wenigstens lauffähigen Code der den Fehler produziert, damit man diesen hier oder bei Fiddle einstellen kann für die anderen zum Reproduzieren.

Verschenkte Zeit ist hingegen im Nebel zu stochern, wie mir das hier im Moment ein bisschen den Eindruck macht. Denn selbst wenn jetzt ein, zwei oder drei verschiedene Tests nicht den Erfolg bringen heißt das ja nicht, dass es daran nicht lag. Es könnten ja mehrere Probleme sein und die findest du auf diese Weise niemals.
 
Zurück
Oben