2012-10-30 10 views
5

Mam następujący kod w widoku MVC3:window.location.hash zwraca hash tag przed wartością

$(document).ready(function() { 
    if (window.location.hash) { 
     var manager= new Manager(); 

     manager.doSomeStuff(window.location.hash); 
    } 
}); 

Interesującą rzeczą jest to, że gdy nie ma hash tag w adresie URL, lub istnieje tylko przykładem hash tag:

http://localhost:1223/Index/AboutUs 

http://localhost:1223/Index/AboutUs# 

Gdy window.location.hash jest pusta, a funkcja nie jest wykonywany. Ale kiedy jest jakaś wartość w tagu hash:

http://localhost:1223/Index/AboutUs#categoryId=5&manufacturerId=8 

Wartość w window.location.hash jest #categoryId=5&manufacturerId=8

Czy możesz mi wyjaśnić, dlaczego tag # jest wliczone w wartość i dlatego, kiedy tam nie ma wartość po tagu #, window.location.hash jest pusta.

+0

Tak, to robi ??? – adeneo

Odpowiedz

9

Nic nie trzeba wyjaśniać. Tak to działa.

Czytaj więcej tutaj: http://www.w3schools.com/jsref/prop_loc_hash.asp

Definicja i Wykorzystanie

The hash property returns the anchor portion of a URL, including the hash sign (#). 
+0

Tak, widziałem definicję, ale wydaje się dziwne, że znak hash jest zwracany z wartością. Właśnie dlatego zadałem to pytanie. Również podczas ustawiania wartości window.location.hash nie trzeba dodawać znaku hash do ciągu. –

8

Można ją zmienić, jeśli chcesz po prostu zmieniając nazwę skrótu:

//Your old hash name caught in a variable 
var nameHash = location.hash; 

//Your new hash name without "#" 
var newHashName = nameHash.replace("#",""); 
+0

Może to spowodować niepożądane rezultaty, jeśli skrót będzie zawierał inny znak '# '. – Bernard

1

You can repalce # ale w ten sposób stworzy konflikt i nie będzie działał z javascript.

Here is window.location reference link.

Oto inne przykłady użycia:

$(document).ready(function() { 
    var urlHash = window.location.hash; 
    var sampleURL = '#categoryId=5&manufacturerId=8'; 

    if (urlHash.length > 1) { 
     //do stuff 
    }else{ 
     //if value is empty, do stuff 
    } 

    if (urlHash === sampleURL) { 
     commonResponse(); 
    } 

    $('a').click(function() { 
     var target = $(this).attr('href'); 

     if (target === sampleURL) { 
      commonResponse(); 
     }  
    }); 

    function commonResponse() { 
     //alert('ok'); 
    } 
}); 
7
var hash = window.location.hash.substring(1); 

ten pomija pierwszy znak łańcucha, który jest hash tag.

Powiązane problemy