<base>
Etiketin kullanılıp kullanılmayacağına karar vermeden önce , nasıl çalıştığını, ne için kullanılabileceğini ve ne anlama geldiğini anlamanız ve nihayetinde avantajlardan / dezavantajlardan ağır basmanız gerekir.
<base>
Etiket esas olarak mevcut bağlamda ilgili endişe gerekmez olarak dilleri templating göreli bağlantılar oluşturarak kolaylaştırır her linke.
Örneğin yapabilirsin
<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" />
onun yerine
<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>
Değerin eğik çizgi ile biteceğini lütfen unutmayın , aksi takdirde son yola göre yorumlanacaktır.
Tarayıcı uyumluluğuna gelince, bu yalnızca IE'de sorunlara neden olur. <base>
HTML olarak Belirttiğiniz içinde etikettir değil bir uç etiketi sahip </base>
sadece kullanımına yasal yüzden, <base>
bir uç etiketi olmadan. Ancak IE6 farklı düşünüyor ve tüm içeriği sonra<base>
etiketi olarak yerleştirilen böyle durumda olan çocuğa ait <base>
HTML DOM ağacındaki eleman. Bu, ilk bakışta Javascript / jQuery / CSS'de açıklanamayan sorunlara neden olabilir, yani html>body
HTML DOM denetçisinde arasında bir base
(ve head
) olması gerektiğini keşfedene kadar, belirli seçicilerde öğelere tamamen erişilemez .
Yaygın bir IE6 düzeltmesi, bitiş etiketini eklemek için bir IE koşullu yorumu kullanıyor:
<base href="http://example.com/en/"><!--[if lte IE 6]></base><![endif]-->
W3 Doğrulayıcı'yı umursamıyorsanız veya zaten HTML5'deyseniz, kendi kendine kapatabilirsiniz, her webbrowser yine de onu destekler:
<base href="http://example.com/en/" />
<base>
Etiketi kapatmak, sonsuz bir döngüde göreli bir URI ile kaynak istemek için WinXP SP3'teki IE6'nın deliliğini anında düzeltir .<script>
src
<base>
Etikette <base href="https://stackoverflow.com//example.com/somefolder/">
veya gibi göreli bir URI kullandığınızda başka bir potansiyel IE sorunu ortaya çıkar <base href="https://stackoverflow.com/somefolder/">
. Bu IE6 / 7 / 8'de başarısız olacaktır. Ancak bu tam olarak tarayıcının hatası değildir; <base>
etikette göreli URI'ler kullanmak tek başına yanlıştır. HTML4 özellikleri dolayısıyla ile başlanarak, bu mutlak bir tanım olması gerektiği belirtilir http://
ya da https://
şema. Bu, HTML5 spesifikasyonunda bırakılmıştır . Dolayısıyla, HTML5 kullanıyorsanız ve yalnızca HTML5 uyumlu tarayıcıları hedefliyorsanız, <base>
etikette göreceli bir URI kullanarak her şey yolunda olmalıdır .
Gibi adlandırılmış / karma parçası çapaları kullanmakla ilgili olarak <a href="#anchor">
, sorgu dizesi çapaları gibi <a href="?foo=bar">
ve yol parçası çapaları gibi <a href=";foo=bar">
, bu tür çapalar da dahil olmak üzere<base>
temelde göreceli tüm bağlantıları bildirdiğiniz etiketle . Göreli bağlantıların hiçbiri artık geçerli istek URI'siyle ilişkili değildir ( etiket olmadan olacağı gibi ). Bu başlangıçta yeni başlayanlar için kafa karıştırıcı olabilir. Bu çapaları doğru şekilde oluşturmak için temel olarak URI'yi eklemeniz gerekir,<base>
<a href="${uri}#anchor">hash fragment</a>
<a href="${uri}?foo=bar">query string</a>
<a href="${uri};foo=bar">path fragment</a>
burada ${uri}
temel $_SERVER['REQUEST_URI']
olarak PHP, ${pageContext.request.requestURI}
JSP ve #{request.requestURI}
JSF olarak tercüme edilir . JSF gibi MVC çerçevelerinin tüm bu kazan plakasını azaltan ve ihtiyacı ortadan kaldıran etiketlere sahip olması gerekir <base>
. Ayrıca bkz . Diğer JSF sayfalarına bağlanmak / sayfalara gitmek için hangi URL kullanılır .