2015-01-19 1 views
1
function updateView(category) { 
    console.log(window.location.hash); 
    if (location.hash !== ""){ 
    //convert #3 to 3. 
    //load video based on id 
    //myArray[sanitizedHash]; 

    } else { 

    updateCategoryLabel(category); 
    currentList = updateVideosList(category); 
    chooseRandomVideoFromList(); 
    } 
} 

에 URL을 밖으로 #을 복용 URL? 한마디로</p> <p>가 어떻게이 함수 내에서 구문 분석 할 수있는이 기능은 페이지로드로드에 location.hash

나는 www.mysite.com/#3 대 사전에

감사를 www.mysite.com/3 달성하기 위해 노력하고 있습니다!

편집 : 'else'는 기본적으로 페이지로드시 랜덤 화되는 대신 직접 URL로 이동한다는 것을 추가해야합니다. 이 if 문은 해시가 존재하는지 확인하기 위해 페이지로드시 실행됩니다. 그렇지 않으면 평소와 같이 임의 화됩니다.

답변

2

와 #을 대체 할 수 www.mysite.com/3이 www.mysite.com/#whatever와 동일한 페이지가 아니기 때문에 브라우저가 새 URL로 이동하게합니다.

그냥 해시의 첫 번째 문자와 문자열을 시도 손질하려면 : 당신의 목표는 페이지로드를 실행하지 않는 경우

window.location.hash.substr(1) 
+0

함께, 당신은 http : // example.com/someID'를'http : //example.com/? someID'로 리디렉션하고 마스크하기 위해 .htaccess를 사용하여 PHP를 사용할 수 있도록 할 수 있습니다. 모든 단일 페이지에 대해 새 페이지를 생성하지 않고도 비디오 ID를 얻을 수 있습니다. 'array_keys ($ _ GET)'의 내용에 따라 비디오를로드하는 index.php 페이지가 하나뿐입니다. ** 이것은 또한 사용자가 자바 스크립트를 요구하지 않는 이점이 있습니다. ** – David

+0

그래, 그게 내가 생각한거야. 하지만 내 이해 window.location.hash에 '해시 태그를 추가하는 것 "-"# "어떤 해시 값이 나온다. 내가 해쉬에서 생성 된 값을 유지하면서 출력에서 ​​해시 태그를 제거하는 방법은 무엇을 묻고있다. 그것이 의미가있는 경우 .. – h0bb5

+0

이 경우 window.location.hash의 첫 번째 문자를자를 수 있습니다. 나는 이것을 나의 대답에 추가했다. – stealthwang

2

당신은 window.location.hash 가져온 다음 'www.mysite.com/3'에서 'www.mysite.com/#3'의지에서 URL을 변경하면 빈 문자열

if (location.hash !== ""){ 
    var sanitizedHash = window.location.hash.replace("#", ""); 
    //load video based on id 
    //myArray[sanitizedHash]; 

    } 
0

을, 당신은 HTML5 역사 API가 www.mysite에서 URL을 변경하는 데 사용할 수있는 .COM/# 3 그렇게 www.mysite.com/3합니다 :

var id = location.hash.substr(1); 
history.replaceState({id:id}, id, id); 

주를, 그렇지 않으면 사용자가 브라우저에 버튼을 다시 누르면 다시 3 #을 얻을 수 있기 때문에 replaceState가 사용된다. 이를 허용하려면 replaceState를 pushState로 대체하십시오. 희망이 도움이됩니다.

관련 문제