2011-01-11 15 views
5

Powiel możliwe:
Modifying document.location.hash without page scrollingJak uniemożliwić przeskakiwanie przeglądarki do kotwicy po zmianie identyfikatora fragmentu adresu URL?

Chciałbym anulować zdarzenie, jeśli to możliwe, ale nie widzę żadnego precedensu dla tego produktu. Załóżmy na razie, że jestem zmuszony do używania tego samego ciągu zarówno dla mojego identyfikatora fragmentu, jak i nazwy mojej kotwicy. Muszę przechwycić wydarzenie i jakoś go anulować.

UPDATE: To jest duplikatem Modifying document.location.hash without page scrolling

+0

Zmieniłeś? Przez użytkownika? –

+0

Jest tu pewien kod, który to zrobi, spróbuję go znaleźć :) – alex

+1

Możliwy duplikat: http://stackoverflow.com/questions/1489624/modifying-document-location-hash-without-page-scrolling – scoffey

Odpowiedz

0

Może to?

<h1 id="header">home</h1> 
<ul> 
    <li><a href="#home">Home</a></li> 
    <li><a href="#product">Product</a></li> 
    <li><a href="#about">About</a></li> 
</ul> 
<script type="text/javascript"> 

    window.onload = function(e) { 
    var links = document.getElementsByTagName('a'); 
    for (var i=0; i < links.length; i++) { 
     links[i].addEventListener('click', function(e) { 
      var hash = this.href.split('#')[1]; 
      if(hash.length) { 
       if(hash == 'product') { 
        alert('Sorry, page in development'); 
        e.preventDefault(); 
       }else{ 
        document.getElementById('header').innerHTML = hash; 
       } 
      } 
     }, false); 
    }; 
    }; 
    // OR 
    window.onhashchange = function(e) { 
     var hash = window.location.hash.substr(1); 
     if(hash.length) { 
      if(hash == 'product') { 
       alert('Sorry, page in development'); 
       window.history.back(); 
      }else{ 
       document.getElementById('header').innerHTML = hash; 
      } 
     } 
    }; 

</script> 
Powiązane problemy