Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]zmiana adresu strony - funkcja location.hash
interu58
post
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 25.10.2012

Ostrzeżenie: (0%)
-----


Witam.

Chce stworzyć stronę w formacje "one page website".
Mam taki o to kod:

<html>

<head>

</head>
<body>

<div id="header">
<div id="nav">
<a href="#strona1">1</a>
<a href="#strona2">2</a>
<a href="#strona3">3</a>

</div>
</div>

<div id="page-wrap">

<div id="strona1">
<a name="1"></a>
<div class="page-padding"></div>
<p></p>
</div> <!--END strona1-->

<div id="strona2">
<a name="2"></a>
<div class="page-padding"></div>
<p>This is what you would see on the Portfolio page.</p>
</div> <!--END strona2-->

<div id="strona3">
<a name="3"></a>
<div class="page-padding"></div>
<p></p>
</div> <!--END strona3-->

</div> <!--END page-wrap-->

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script>$(document).ready(function() {
function filterPath(string) {
return string
.replace(/^\//,'')
.replace(/(index|default).[a-zA-Z]{3,4}$/,'')
.replace(/\/$/,'');
}
$('a[href*=#]').each(function() {
if ( filterPath(location.pathname) == filterPath(this.pathname)
&& location.hostname == this.hostname
&& this.hash.replace(/#/,'') ) {
var $targetId = $(this.hash), $targetAnchor = $('[name=' + this.hash.slice(1) +']');
var $target = $targetId.length ? $targetId : $targetAnchor.length ? $targetAnchor : false;
if ($target) {
var targetOffset = $target.offset().top;
$(this).click(function() {
$('html, body').animate({scrollTop: targetOffset}, 1500);
return false;


});
}
}
});
});</script>
</body>
</html>

i działa to w ten sposób, że jak wciskam na poszczególne pozycje menu to strona się przewija, ale nie zmienia się adres strony, który bez różnicy, czy wybiorę z menu opcje 1 czy 2 zawsze jest ten sam, a co za tym idzie nie będzie jak podlinkować poszczególnych pozycji menu. Znalazłem, że można ten problem rozwiązać za pomocą funkcji location.hash. Kiedy wpisuje noAfter:function() {location.hash=id} to i owszem adres strony się zmienia czyli wyskakuje mi #1, #2 czy #3, ale nie działa już przewijanie. Niestety nie znam zbyt dobrze js, szukam rozwiązania już jakiś czas i nic mi nie działa poprawnie.

Mógłby mi ktoś podpowiedzieć co mógłbym zrobić, żeby przewijanie działało razem ze zmianą adresu strony?

Z góry dziękuję za pomoc.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 03:24