<base>
टैग का उपयोग करने या न करने का निर्णय लेने से पहले , आपको यह समझने की आवश्यकता है कि यह कैसे काम करता है, इसका क्या उपयोग किया जा सकता है और इसके निहितार्थ क्या हैं और अंत में फायदे / नुकसान को पछाड़ दें।
<base>
टैग मुख्य रूप से भाषाओं templating के रूप में आप में वर्तमान संदर्भ के बारे में चिंता की जरूरत नहीं है में संबंधित लिंक्स बनाने को आसान बनाता है हर लिंक।
आप उदाहरण के लिए कर सकते हैं
<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 डोम पेड़ में तत्व। यह जावास्क्रिप्ट / jQuery / CSS में प्रथम दृष्टिहीन समस्याओं का कारण बन सकता है, अर्थात विशिष्ट चयनकर्ताओं में पूरी तरह से अनुपलब्ध होने जैसे तत्व html>body
, जब तक आप HTML DOM निरीक्षक में खोजते हैं कि बीच में base
(और head
) होना चाहिए ।
एक आम IE6 तय अंत टैग शामिल करने के लिए एक IE सशर्त टिप्पणी का उपयोग कर रहा है:
<base href="http://example.com/en/"><!--[if lte IE 6]></base><![endif]-->
यदि आप W3 मान्यकर्ता के बारे में परवाह नहीं करते हैं, या जब आप एचटीएमएल 5 पर पहले से ही हैं, तो आप इसे केवल स्वयं बंद कर सकते हैं, हर वेबब्रोसर वैसे भी इसका समर्थन करता है:
<base href="http://example.com/en/" />
<base>
टैग को बंद करना भी WinXP SP3 पर IE6 के पागलपन को तुरंत ठीक करता है, एक अनंत लूप में एक <script>
रिश्तेदार URI के साथ संसाधनों का अनुरोध करने के लिए src
।
एक अन्य संभावित आईई समस्या प्रकट जब आप में एक सापेक्ष URI का उपयोग करेगा <base>
जैसे टैग, <base href="https://stackoverflow.com//example.com/somefolder/">
या <base href="https://stackoverflow.com/somefolder/">
। यह IE6 / 7/8 में विफल रहेगा। हालांकि यह वास्तव में ब्राउज़र की गलती नहीं है; <base>
टैग में रिश्तेदार URI का उपयोग करना गलत है। HTML4 विनिर्देश ने कहा कि यह एक निरपेक्ष यूआरआई होना चाहिए, इस प्रकार के साथ शुरू http://
या https://
योजना। इसे एचटीएमएल 5 विनिर्देशन में हटा दिया गया है । इसलिए यदि आप HTML5 का उपयोग करते हैं और केवल HTML5 संगत ब्राउज़र को लक्षित करते हैं, तो आपको <base>
टैग में किसी रिश्तेदार URI का उपयोग करके सभी ठीक होना चाहिए ।
नामित का उपयोग करने के लिए के रूप में / हैश टुकड़ा लंगर की तरह <a href="#anchor">
, जैसे क्वेरी स्ट्रिंग एंकर <a href="?foo=bar">
और की तरह पथ टुकड़ा लंगर <a href=";foo=bar">
, साथ <base>
टैग आप मूल रूप से घोषणा कर रहे सभी संबंधित लिंक्स यह के सापेक्ष, सहित एंकर के उन तरह। कोई भी संबंधित लिंक वर्तमान अनुरोध URI के सापेक्ष नहीं है (जैसा कि <base>
टैग के बिना होगा )। यह पहली जगह में शुरुआत के लिए भ्रामक हो सकता है। उन एंकरों का सही तरीके से निर्माण करने के लिए, आपको मूल रूप से URI को शामिल करना होगा,
<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 में अनुवाद किया जाता है । ध्यान दिया जाना चाहिए कि जेएसएफ जैसे एमवीसी फ्रेमवर्क में इस सभी बॉयलरप्लेट को कम करने और इसकी आवश्यकता को दूर करने के लिए टैग हैं <base>
। अन्य JSF पेजों को लिंक / नेविगेट करने के लिए ao What URL का उपयोग करने के लिए भी देखें ।