2011-04-07 6 views
1

웹 페이지에 기본 href가있는 경우 페이지를 새로 고치지 않고 # ElementId을 사용할 때 무시해도됩니까? location.href = "#_ ElementId_"를 사용할 때 기본 href를 무시하는 방법은 무엇입니까?

<html> 
    <head> 
    <base href="http://www.google.com/" /> 
    </head> 
    <body> 
    <div id="test"> 
     Test 
    </div> 
    <button onclick="location.href='#test'">Back to Test</button> 
    <a href="#test">Back to Test!</a> 
    </body> 
</html> 

내가 버튼이나 링크 중 하나를 클릭

, 나는 브라우저가 # 테스트를 div에 할 수있는 페이지를 가지고 싶어 :

는 여기에 몇 가지 코드입니다. 기본 href 태그가 없으면 모든 것이 작동합니다. 그러나 base-href 태그를 사용하면 Javascript의 도움 없이는 할 수 없습니다. 좀 더 "자연스러운"방법으로 그것을 할 수있는 방법이 있습니까?

다음은 그냥 출력에 링크의 href 속성에서 전체 절대 URL이있을 수 있습니다

<html> 
    <head> 
    <base href="http://www.google.com/" /> 
    <script type="text/javascript"> 
     function goToElement(elementId) { 
     var baseTag = document.getElementsByTagName("base")[0]; 
     var existingBaseHref = baseTag.href; 
     baseTag.href = ""; 
     location.href = "#" + elementId; 
     baseTag.href = existingBaseHref; 
     } 
    </script> 
    </head> 
    <body> 
    <div id="test"> 
     Test 
    </div> 
    <button onclick="goToElement('test')">Back to Test</button> 
    <a onclick="goToElement('test')">Back to Test!</a> 
    </body> 
</html> 
+0

가 왜 기본 href가 있나요 서버에 HREF의 전체 경로를 추가? location.hash를 elementId로 설정하지 않는 이유는 무엇입니까? – mplungjan

+0

@mplungjan - Base-href : 유감스럽게도 역사적인 코드 기반의 이유. :(location.hash에 - 코드 샘플을 제공 할 수 있습니까? – DashK

+0

[[을 사용할 때 현재 페이지를 참조하는 앵커 링크 만들기] (http://stackoverflow.com/questions/8108836/make-anchor-links- 현재 사용중인 페이지 참조) –

답변

1

... 나는 순간이 해결 방법이다.

는 예를 들어, ASP.NET에서이 같은 것을 할 수있는 (사용을 AntiXss library) :

<a href="<%= AntiXss.HtmlAttributeEncode(Request.Url.AbsoluteUri) %>#test"> 
    Link text... 
</a> 
PHP에서이 같은

또는 뭔가 :

<a href="<?php echo htmlentities($_SERVER['REQUEST_URI'], ENT_QUOTES, 'ISO-8859-1'); ?>#test"> 
    Link text... 
</a> 
+0

그러면 페이지가 다시로드됩니까? (답변 해 주셔서 감사합니다.) 제 경우에는 페이지를 새로 고침 할 수 없습니다 (추가) 질문 : – DashK

+0

아니요, 페이지를 새로 고침해서는 안됩니다 (만약 내가 그랬다면 놀랄 것입니다). –

+0

작동합니다! 도와 줘서 고마워요. 이제 절대 URL을 결정하는 방법을 알아야 할 것 같아요. 하아. – DashK

0

이 요소로 이동합니다 id = "test"인 경우 false를 반환하면 페이지에 그대로 유지됩니다.

<a href="#test" onclick="document.getElementById('test').scrollIntoView(); return false">Go to div with id=test</a>

그것은하지 않고 당신이 원하는 일을하는 것이 가능하지 않는 것 중 하나 스크립트를 사용하거나

관련 문제