Marcin Ż.

Marcin Ż. Freelancer

Temat: JS: Po załadowaniu strony chcę znaleźć się 200 pikseli...

Witam,

Po załadowaniu strony chcę znaleźć się 200 pikseli nad kotwicą.

URL: przyklad.html#a15


Uprzejmie proszę o podpowiedź, co zrobić aby poniższy kod działał we wszystkich przeglądarkach zgodnie z moimi założeniami. Na chwile obecną skrypty działa poprawnie w Internet Explorer, jeżeli zostanie wywołany:

<a href="javascript:go();">go</a>


Chcę aby był wywoływany podczas zdarzenia onLoad


<html>

<head>


<script type="text/javascript">

function findPos(obj) {

var nleft = 0;

var ntop = 0;

if (obj.offsetParent) {

nleft = obj.offsetLeft

ntop = obj.offsetTop

while (obj = obj.offsetParent) {

nleft += obj.offsetLeft

ntop += obj.offsetTop

}

}

return [nleft-100,ntop-200];

}

function go() {

var pos = findPos(document.getElementById(location.hash.slice(1)));

scroll(pos[0],pos[1]);

}

</script>

</head>

<body onload="go();">

(...)

<a href="" name="a15">A15</a>

(...)

</body>

</html>
Marcin Ż. edytował(a) ten post dnia 06.09.10 o godzinie 18:17

konto usunięte

Temat: JS: Po załadowaniu strony chcę znaleźć się 200 pikseli...

Może coś takiego:


window.onload = function(e) {

setTimeout(function() {
window.scrollBy(0, -200);
}, 100);

}


Gorzej jest przy odświeżaniu bo w Firefox i chyba IE przewija się dalej o 200px ;P Nie wiem czy działa to pod wszystkimi przeglądarkami, ale na pewno działa pod: Opera 10, Firefox 3, Safari 5, IE 7-8.
Marcin Ż.

Marcin Ż. Freelancer

Temat: JS: Po załadowaniu strony chcę znaleźć się 200 pikseli...

Dziękuję Ci uprzejmie za tę odpowiedź.

Przy pierwszym wczytaniu strony (URL + Enter) jestem przenoszony do kotwicy, niezależnie od ustawionego opóźnienia. (-0px)

Dopiero po odświeżeniu strony (F5), strona jest przesuwana o -200px.
Marcin Ż.

Marcin Ż. Freelancer

Temat: JS: Po załadowaniu strony chcę znaleźć się 200 pikseli...

Rozwiązanie dla: FireFox 3, Opera 10, Chrome, IE 8

<script type="text/javascript">
function goTo() {
var element = document.getElementById(location.hash.slice(2));
var iTop = iLef = 0;
while(element != null) {
iTop += element.offsetTop;
iLef += element.offsetLeft;
element = element.offsetParent;
}
window.scrollTo(iLef-100, iTop-200);
}
</script>


<body onload="goTo()">
<div id="a15"></div>


URL: przyklad.html#Xa15Marcin Ż. edytował(a) ten post dnia 07.09.10 o godzinie 00:52

konto usunięte

Temat: JS: Po załadowaniu strony chcę znaleźć się 200 pikseli...

Marcin Ż.:
Dziękuję Ci uprzejmie za tę odpowiedź.

Przy pierwszym wczytaniu strony (URL + Enter) jestem przenoszony do kotwicy, niezależnie od ustawionego opóźnienia. (-0px)

Dopiero po odświeżeniu strony (F5), strona jest przesuwana o -200px.

A to dziwne bo u mnie to działa po wejściu na stronę (otwarcie przeglądarki > wklejenie linka > enter). Co więcej sama metoda scrollBy wywołana w zdarzeniu onload, działa bez opóźnienia (timeOut) w Google Chrome i Safari. Widać te przeglądarki wywołują zdarzenie onload po przewinięciu strony do kotwicy. No ale jak już wszystko działa to git ;)

Następna dyskusja:

jak zapobiec przeskakiwaniu...




Wyślij zaproszenie do