में प्रत्येक ब्राउज़र टैब में अलग-अलग फ़ेविकॉन हमारे पास हमारे एप्लिकेशन में एक कस्टम सत्र तंत्र है, जो उपयोगकर्ता को प्रत्येक ब्राउज़र टैब, में अलग-अलग सत्र (उदा।, अलग-अलग प्रमाण-पत्र) रखने की अनुमति देता है, भले ही यूआरएल हों। यह तंत्र आईई (v11) सहित सभी प्रमुख ब्राउज़रों में बहुत अच्छा काम करता है।IE
समस्या
हम (अलग रंग के साथ) से संकेत मिलता है जो टैब जो सत्र के अंतर्गत आता है विभिन्न फ़ेविकॉन के साथ प्रत्येक ब्राउज़र टैब की आपूर्ति करना चाहते हैं। ऐसा करने के लिए, हम सत्र के आधार पर विभिन्न फ़ेविकॉन URL का उपयोग
<link rel='icon' href='url_to_favicon_session_id' type='image/ico'/>
यह फ़ायरफ़ॉक्स और क्रोम में अच्छा काम करता है, फिर भी आईई (जैसे URL पर ओर इशारा करते हुए आइकन प्रत्येक टैब में एक ही है सभी टैब के बीच फ़ेविकॉन साझा करने के लिए लगता है सेट , लोड करने का क्रम प्रत्येक टैब में दिखाई देने वाले फेविकॉन को निर्धारित करता है)।
सवाल
हम किसी भी तरह एक ही यूआरएल के साथ संपूर्ण ब्राउज़र टैब में favicons साझा करने के लिए IE के लिए मजबूर कर सकते हैं?
नोट, यूआरएल बदलना यहां एक विकल्प नहीं है।
मिनिमल कार्य उदाहरण
पूर्ण कोड स्निपेट नीचे समस्या पुन: पेश करने (एचटीएमएल 5 समर्थन के साथ IE में चलाने के लिए एक वेब सर्वर पर डाल दिया, एक ही ब्राउज़र के कई टैब में इस फ़ाइल को खोलने)।
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<script type="text/javascript">
var icons = [
"http://google.com/images/google_favicon_128.png",
"https://assets-cdn.github.com/favicon.ico",
"https://www.microsoft.com/favicon.ico?v2",
"https://s.yimg.com/rz/l/favicon.ico",
"http://www.stackoverflow.com/favicon.ico",
];
var idx = localStorage["favicon"];
if (idx === undefined) {
idx = 0;
} else {
idx = parseInt(idx);
}
localStorage["favicon"] = (idx + 1) % icons.length;
var link = document.createElement('link');
link.type = 'image/x-icon';
link.rel = 'icon';
link.href = icons[idx];
document.getElementsByTagName('head')[0].appendChild(link);
</script>
</head>
<body>
Open this page in multiple tabs. Favicon should be different in each tab.
</body>
</html>
उदाहरण में, फेविकॉन टैग जावास्क्रिप्ट के माध्यम से उत्पन्न होता है। क्या यह वास्तविक आवेदन में भी मामला है? यदि ऐसा है, तो मैं कल्पना कर सकता हूं कि IE अपने कैश (यूआरएल के आधार पर) से फेविकॉन लोड करता है और जावास्क्रिप्ट में आने पर इसे फिर से लोड नहीं करेगा। उस स्थिति में, आप इसे प्रारंभिक पृष्ठ सामग्री में सर्वर पक्ष प्रस्तुत करने का प्रयास कर सकते हैं। – GolezTrol
नहीं, असली एप्लिकेशन फेविकॉन में HTML कोड में एम्बेड किया गया है।हालांकि यह आईई * कैसे * पृष्ठ में फेविकॉन शामिल है के लिए कोई फर्क नहीं पड़ता, लेकिन * पृष्ठ * यूआरएल क्या है। इसके अलावा यह एक कैशिंग समस्या नहीं है, क्योंकि (1) यदि आप दो अलग-अलग यूआरएल में प्रदान किए गए कोड को लोड करते हैं तो यह अपेक्षित काम करता है, (2) भले ही एचटीएमएल कैश किया गया हो, स्क्रिप्ट अलग फेविकॉन यूआरएल लोड करेगी, इसलिए फेविकॉन फाइल कैशिंग नहीं है यहां प्रासंगिक – tomash
प्रत्येक सत्र के लिए पेज यूआरएल में एक डमी अद्वितीय पैरामीटर जोड़ने के लिए चारों ओर एक काम हो सकता है (उदा। Http://yoursite.com/page?id=)। यह आईई 11 को प्रत्येक टैब पर एक अलग फेविकॉन लोड करने के लिए मजबूर करेगा। –
dbcb