2012-04-03 4 views
2

현재 흥미로운 문제가 있습니다. Facebook PHP SDK를 사용하여 내 웹 사이트의 사용자를 인증합니다. 첫 번째 요청에서 리디렉션 URL을 전달하고 모두 예상대로 작동하면 사용자는 지정된 URL로 다시 전송됩니다.리디렉션 자바 스크립트의 URL에서 #을 삭제하십시오.

'중급 페이지'라고하는이 페이지에서 두 번째 페이지로 리디렉션됩니다.이 페이지는 '홈 페이지'라고합니다. 그리고 여기에 재미있는 #_=_이 URL에 추가되었음을 알 수 있습니다. 이 문제는 여기에서 설명합니다 : Facebook Callback appends '#_=_' to Return URL.

해당 페이지에서 JavaScript 솔루션을 구현했습니다. 그러나 한 가지 문제가 남아 있습니다. 이상한 밑줄 문자가 없어지더라도 URL의 실제 해시 부분은 그대로 유지됩니다. 따라서 큰 문제는 아니며 URL은 ./home#입니다.

이 문제를 해결하는 방법을 살펴 보았습니다 : How to remove the hash from window.location with JavaScript without page refresh?.

그러나 분명히 이러한 솔루션을 사용하려면 페이지 새로 고침이 필요합니다. 분명히,이 작업을 수행하는 가장 효율적이고 사용자 친화적 인 방법이 아닙니다.

이제는 내 사용자가 '중간 페이지'로 돌아와 내 '홈 페이지'로 다시 리디렉션하면 작업의 새로 고침 부분이 어떤 식 으로든 건너 뛸 수 있다고 생각했습니다. 나는 절대적으로 잘못 될 수 있습니다.

결론적으로, URL의 나머지 해시 부분을 제거하고 실제로 '중간 페이지'를 다시로드하지 않고 한 번 제거하면 '홈 페이지'로 리디렉션되는 방법이 있습니까?

EDIT : PHP를 통해 사용자를 리디렉션하고 있습니다 (header('Location: ./home');).

+0

중간 페이지에서 사용자를 어떻게 리디렉션합니까? – Maciej

+0

죄송합니다. 내 질문을 편집했습니다. – elliottbolzan

+0

IMHO 해시가없는 URL을 호출하면 항상 페이지가 새로 고침됩니다. 해시가 무엇인지 ... 해시 페이지의 모든 링크를 지울 수 있으며 삭제할 수 있습니다. 다음 번에 사용자가 링크를 클릭 할 때 .... – Dominik

답변

2

자바 스크립트를 사용하는 모든 브라우저에서 실제로 이것을 시도한 적이 없으므로 실제로는 가능하지 않습니다. 그러나 HTML 5를 사용하여 같은 것을 달성 할 수 있습니다. HTML5 History API

function deleteHash(){ 
    // Remove the hash by rewriting URL without it. 
    history.pushState("",document.title,window.location.pathname + window.location.search); 
} 
+0

정말 고마워! – elliottbolzan

관련 문제