<base>
태그 를 사용할지 여부를 결정하기 전에 태그의 작동 방식, 사용 가능한 내용 및 그 의미를 이해하고 최종적으로 장점 / 단점을 능가해야합니다.
<base>
태그는 주로 당신이 현재 컨텍스트에 대해 걱정할 필요가 없기 때문에 언어를하는 주형의 상대 링크 생성 완화 모든 링크를.
예를 들어 할 수 있습니다
<base href="${host}/${context}/${language}/">
...
<link rel="stylesheet" href="css/style.css" />
<script src="js/script.js"></script>
...
<a href="home">home</a>
<a href="faq">faq</a>
<a href="contact">contact</a>
...
<img src="img/logo.png" />
대신에
<link rel="stylesheet" href="/${context}/${language}/css/style.css" />
<script src="/${context}/${language}/js/script.js"></script>
...
<a href="/${context}/${language}/home">home</a>
<a href="/${context}/${language}/faq">faq</a>
<a href="/${context}/${language}/contact">contact</a>
...
<img src="/${context}/${language}/img/logo.png" />
있습니다 <base href>
슬래시 값의 끝, 그렇지 않으면 마지막 경로에 상대적으로 해석됩니다.
브라우저 호환성에 관해서는 IE에서만 문제가 발생합니다. <base>
HTML뿐만 지정된 태그는 없습니다 종료 태그를 가진 </base>
그냥 사용에 합법적 그래서, <base>
종료 태그없이. 그러나 IE6는 달리 생각하고 전체 내용 후<base>
태그로 배치 이러한 경우에 아이 의<base>
은 HTML DOM 트리에서 요소의 . 이로 인해 Javascript / jQuery / CSS에서 설명 할 수없는 문제가 발생할 수 있습니다. 즉 html>body
, HTML DOM 검사기 에서 사이에 base
(및 head
) 가 있어야한다는 것을 알 때까지는 특정 선택기에서 요소에 완전히 도달 할 수 없습니다 .
일반적인 IE6 수정은 IE 조건부 주석을 사용하여 종료 태그를 포함합니다.
<base href="http://example.com/en/"><!--[if lte IE 6]></base><![endif]-->
W3 Validator에 신경 쓰지 않거나 이미 HTML5를 사용하는 경우 자체 닫을 수 있습니다. 모든 웹 브라우저는 어쨌든 지원합니다.
<base href="http://example.com/en/" />
<base>
태그를 닫으면 WinXP SP3에서 IE6 의 광기 가 즉시 수정되어 무한 루프로 <script>
상대 URI가 src
있는 리소스 를 요청 합니다 .
<base>
태그에 상대 URI ( 예 : <base href="https://stackoverflow.com//example.com/somefolder/">
또는) 를 사용하면 또 다른 잠재적 인 IE 문제가 나타납니다 <base href="https://stackoverflow.com/somefolder/">
. 이것은 IE6 / 7 / 8에서 실패합니다. 그러나 이것은 정확히 브라우저의 결함이 아닙니다. <base>
태그 에서 상대 URI를 사용하는 것은 그 자체로 잘못되었습니다. HTML4 사양 따라서 시작하여, 그 절대 URI되어야한다고 진술 http://
또는 https://
방식. 이것은 HTML5 사양 에서 삭제되었습니다 . 따라서 HTML5를 사용하고 HTML5 호환 브라우저 만 대상으로하는 경우 <base>
태그 에서 상대 URI를 사용하면 됩니다.
와 같은 명명 된 / 해시 조각 앵커를 사용하는 것과 같이 <a href="#anchor">
문자열 앵커를 쿼리 <a href="?foo=bar">
하고 경로 조각 앵커를 좋아 <a href=";foo=bar">
합니다. <base>
태그를 사용하면 기본적으로 해당 앵커 종류를 포함하여 관련 링크를 모두 선언 합니다 . 태그가 없는 것처럼 현재 요청 URI와 관련된 상대 링크는 더 이상 없습니다 . 이것은 처음에는 초보자에게 혼란 스러울 수 있습니다. 이러한 앵커를 올바른 방식으로 구성하려면 기본적으로 URI를 포함해야합니다.<base>
<a href="${uri}#anchor">hash fragment</a>
<a href="${uri}?foo=bar">query string</a>
<a href="${uri};foo=bar">path fragment</a>
여기서 ${uri}
기본적으로 $_SERVER['REQUEST_URI']
PHP, ${pageContext.request.requestURI}
JSP 및 #{request.requestURI}
JSF로 번역됩니다 . JSF와 같은 MVC 프레임 워크에는이 모든 상용구를 줄이고 필요를 제거하는 태그가 있습니다 <base>
. 다른 JSF 페이지를 링크 / 탐색하는 데 사용할 URL 도 참조하십시오 .