आप सही हैं, यह आधार मेटा टैग है। यह एक समस्या है जिसे आप jQuery UI (1.9) के नवीनतम संस्करण के साथ सामना करेंगे, यह 1.8 के साथ काम करता है। टैब एपीआई में बहुत सारे बदलाव हुए थे, लेकिन जब तक आप jQuery स्रोत कोड की जांच नहीं करते हैं तब तक कुछ भी इस समस्या का कारण नहीं लग रहा था।
- आधार मेटा टैग href विशेषता (आपके द्वारा टैब सामग्री के लिए संदर्भ के रूप में इस्तेमाल करते हैं) हैश + आईडी से एक पूर्ण यूआरएल के लिए टैब में रूपांतरित करने के लिए (अपने आधार टैग मान का प्रयोग करके) ब्राउज़र निर्देश देता है। यह अपेक्षित व्यवहार है।
- टैब यूआई के पिछले संस्करण अनुमान लगाने के लिए कड़ी मेहनत करेंगे कि अगर href वास्तव में दूरस्थ था या नहीं, तो href टैब मान को विभाजित कर रहा है, फिर इसे वर्तमान URL और पर BASE टैग से तुलना कर रहा है, फिर यह तय करना कि वास्तव में यह वास्तव में था या नहीं स्थानीय।
- jQuery का नवीनतम संस्करण BASE टैग मान की जांच नहीं करता है।
- तो, नवीनतम संस्करण, जब BASE मेटा टैग के साथ उपयोग किया जाता है, तो अजाक्स का उपयोग करके टैब सामग्री को लोड करने का प्रयास करेगा, स्वयं को पुनः लोड कर देगा (या जो भी आधार URL में है)।
function isLocal(anchor) {
return anchor.hash.length > 1 &&
anchor.href.replace(rhash, "") ===
location.href.replace(rhash, "")
// support: Safari 5.1
// Safari 5.1 doesn't encode spaces in window.location
// but it does encode spaces from anchors (#8777)
.replace(/\s/g, "%20");
}
कोड आयोजित किया जाता है:
this.anchors.each(function(i, a) {
var href = $(a).attr("href");
// For dynamically created HTML that contains a hash as href IE < 8 expands
// such href to the full page url with hash and then misinterprets tab as ajax.
// Same consideration applies for an added tab with a fragment identifier
// since a[href=#fragment-identifier] does unexpectedly not match.
// Thus normalize href attribute...
var hrefBase = href.split("#")[ 0 ],
baseEl;
if (hrefBase && (hrefBase === location.toString().split("#")[ 0 ] ||
(baseEl = $("base")[ 0 ]) && hrefBase === baseEl.href)) {
href = a.hash;
a.href = href;
}
यह वही है jQuery यूआई टैब्स संस्करण 1.9.2 में उपयोग करता है:
यह वही है jQuery यूआई टैब्स संस्करण 1.8.24 में प्रयोग किया जाता है टैब कोड के व्यापक पुनर्लेखन के कारण अलग-अलग, लेकिन आप विचार प्राप्त कर सकते हैं ($ ("आधार") [0] आधार मेटा टैग मान है)।
अब तक मुझे सामान्य टैब एपीआई का उपयोग करके "यह स्थानीय है, अजाक्स का उपयोग न करें" टैब को बताने का कोई तरीका नहीं मिला है। मैं आपको जो पेशकश कर सकता हूं वह वही है जो मैंने इसे सही समय में ठीक करने के लिए किया था (जबकि मैं पूछता हूं, पुनः जांच करता हूं और शायद एक बग रिपोर्ट भर सकता हूं): एक हैक।
function isLocal(anchor) {
return anchor.hash.length > 1 &&
((anchor.href.replace(rhash, "") === location.href.replace(rhash, "").replace(/\s/g, "%20")) ||
(anchor.href.replace(rhash, "") === $("base")[ 0 ].href));
}
यह नया संस्करण है और पिछले संस्करण में किया गया चेक है।
नवीनतम jQuery UI की एक गैर-मिनीफाइड प्रति में, उस के साथ isLocal फ़ंक्शन को प्रतिस्थापित करें। फिर फ़ाइल को छोटा करें। मूल संस्करण को बदलें। परीक्षा।
यह फ़ायरफ़ॉक्स (17.0.1) और क्रोमियम (18.0.1025.168) में मेरे लिए काम किया।
नुकसान यह है कि आप किसी तृतीय-पक्ष प्रति (सीडीएन से) का उपयोग नहीं कर सकते हैं। मेरे लिए यह कोई समस्या नहीं है क्योंकि मेरे अधिकांश एप्लिकेशन इंट्रानेट में उपयोग किए जाते हैं।
अगर किसी को कोई बेहतर समाधान मिल जाए या jQuery UI कोड को हैक किए बिना इसे कैसे किया जाए, तो कृपया हमें बताएं।
अद्यतन: मुझे यह बग रिपोर्ट मिली (कई डुप्लिकेट के साथ): http://bugs.jqueryui.com/ticket/7822 मुझे अपनी टिप्पणी जोड़ने का लुत्फ उठाना पड़ा लेकिन ऐसा लगता है कि jQuery डेवलपर्स इसे "ठीक" नहीं करेंगे क्योंकि वे समस्या कहीं और सोचते हैं। बगट्रैकर से उद्धरण:
मैं नहीं दिख रहा है कि यह कैसे तय करने के लिए गैर तुच्छ है ...
यहाँ तुच्छ, गतिशील पीएचपी कार्यान्वयन है: 'http: //'। $ _SERVER ['HTTP_HOST']। $ _SERVER ['REQUEST_URI']। '#foo'।
जावास्क्रिप्ट में इसे ठीक करने के लिए यह काफी छोटा है, लेकिन मैं नमूना कोड प्रदान नहीं करूंगा क्योंकि यह ठीक करने के लिए गलत जगह है और इसे अत्यधिक निराश होना चाहिए। लिंक का व्यवहार स्पष्ट रूप से परिभाषित और सभी ब्राउज़रों में सुसंगत है। लोगों को गलत यूआरएल का उपयोग करने और फिर जावास्क्रिप्ट में उनके चारों ओर हैकिंग करने का कोई कारण नहीं है।
अंत में, यह ध्यान रखना महत्वपूर्ण है कि "फिक्सिंग" का मतलब यह होगा कि सही तरीके से उपयोग करने वाले सभी के लिए सही व्यवहार तोड़ना होगा। ध्यान रखें कि यह तय किया गया था क्योंकि उचित URL वाले लोग पुराने कोड में मौजूद वास्तविक बग में चल रहे थे।
आपका कोड सही लगता है ... क्या आप इस पृष्ठ पर कुछ अन्य AJAX कॉल कर रहे हैं ?? – bipen
चारों ओर अन्य जावास्क्रिप्ट दिखाएं! – iappwebdev
मैंने अभी एक व्यापक परीक्षण समाप्त कर लिया है और यह मेटा बेस टैग था जो इस मुद्दे का कारण बन रहा है! मैं अपने होमपेज पर टैब का उपयोग कर रहा हूं और वे ठीक लोड कर रहे हैं ... उम्मीद है कि कोई कुछ प्रकाश डाल सकता है, धन्यवाद। –