5

हमारे पास कुछ HTML पृष्ठ (स्थानीय, वेब सर्वर पर नहीं हैं) जो विशिष्ट आधार निर्देशिका की पहचान करने के लिए BASE तत्व का उपयोग करते हैं जिसमें सामान्य स्टाइलशीट्स और छवियों का एक गुच्छा शामिल है। यहाँ एक उदाहरण है (पेज ग में संग्रहीत है: \ अस्थायी \ एचटीएमएल \ test.html, संसाधनों निर्देशिका सी है: \ अस्थायी \ संसाधन):IE8 मानकों मोड में IE8 में प्रस्तुत स्थानीय HTML फ़ाइल के लिए BASE तत्व का उपयोग करते समय स्टाइलशीट/स्क्रिप्ट/छवियां अनुपलब्ध

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head> 
     <base href="file:///c:/temp/resources/"></base> 
    </head> 
    <body> 
     <p><img src="image.jpg" /></p> 
    </body> 
</html> 

बस इतना ही मौजूदा ब्राउज़र है कि मैं परीक्षण किया है में ठीक काम करता है (फ़ायरफ़ॉक्स, क्रोम, आईई 9) और क्विर्क मोड में IE8 में ठीक काम करता है। लेकिन IE8 मानकों के तहत चल रहे IE8 में (इस पृष्ठ के लिए डिफ़ॉल्ट - और वास्तविक पृष्ठों में आवश्यक मोड है) किसी भी स्टाइलशीट, स्क्रिप्ट या छवि संदर्भ टूटा हुआ है - ऐसा लगता है कि तत्व को पूरी तरह से अनदेखा किया जा रहा है।

मैंने तत्व पर अन्य भिन्नताओं की कोशिश की है - <base href="file:///c:/temp/resources/"> या <base href="file:///c:/temp/resources/"/> साथ ही साथ विभिन्न फ़ाइल यूआरएल के सभी प्रकार, उदाहरण के लिए फ़ाइल: /// c: /temp/resources/test.html इत्यादि और आधार के लिए सापेक्ष hrefs लेकिन कुछ भी छवियों/स्टाइलशीट/स्क्रिप्ट लोड करने के लिए राजी नहीं लगता है।

मुझे पता है कि ऊपर दिया गया उदाहरण तुच्छ लगता है, लेकिन हमारे असली परिदृश्य में हमें आईई 8 मानकों के तहत IE8 में पृष्ठों को लोड करना होगा और एक विशिष्ट सेट करना होगा, इसलिए यदि कोई एक है तो मैं वास्तव में समाधान का पता लगाने की कोशिश कर रहा हूं ।

मैंने तत्व से संबंधित शुरुआती IE8 संस्करणों में एक बग के कुछ संदर्भों को चालू किया है, लेकिन उन्हें कुछ समय पहले ठीक के रूप में चिह्नित किया गया है और मैं इसे सभी IE8 अपडेटों के साथ एक स्वच्छ विंडोज 7 वीएम पर परीक्षण कर रहा हूं।

+0

बहुत धन्यवाद, नीचे प्रतिक्रिया। – fubaar

उत्तर

9

स्थिति अपडेट:     उपयोग: <base href="\\c:\temp\resources\" />

यहाँ इस प्रक्रिया मैं इस समाधान बनाने में इस्तेमाल स्थानीय फ़ाइलों के लिए बेस गुण उपयोग करने के लिए IE8 अनुमति देने के लिए है।

स्पष्ट करने के लिए: यह W3C मान्य समाधान के लिए IE7, IE8 और सभी आधुनिक ब्राउज़रों काम करता है!


संदर्भ स्क्रीनशॉट::
यहाँ आप देख सकते हैं कि IE8 पता पट्टी अन्य आधुनिक ब्राउज़रों की तरह काम नहीं करता है: स्लैश उलट और वहाँ कोई file:/// प्रोटोकॉल देखा है । हालांकि, IE8 प्रोटोकॉल में ब्राउज़र की स्थिति बार पृष्ठ रीफ्रेश पर दिखाएगा!

enter image description here

संदर्भ स्क्रीनशॉट:
के बाद से IE8 स्थानीय फ़ाइलें इलाज है अलग ढंग से, file:/// के लिए IE8 प्रोटोकॉल को समझने के लिए महत्वपूर्ण है।

का एहसास करने के लिए क्या वाक्य रचना तरीके उपलब्ध हैं, इंटरनेट विकल्प (सुरक्षा टैब) देखने स्थानीय इंट्रानेट के लिए हमें उस जानकारी दे देंगे। कोई परिवर्तन नहीं वास्तव में यहाँ किया जाता है, बस वाक्य रचना करें:

enter image description here

ऊपर तस्वीर में, स्थानीय इंट्रानेट विंडो पुष्टि करता है कि बैकस्लैश आवश्यक हैं।

इसके अलावा, यह पता चलता है कि file:\\ प्रोटोकॉल इस स्लेश वाक्य रचना के साथ जुड़ा हुआ है। चूंकि file:/// प्रोटोकॉल IE8 द्वारा स्वचालित रूप से निहित है (कि पहले उल्लेख किया: देखना ब्राउज़र की स्थिति पट्टी और टिप्पणी स्लैश सही गाया जाता है !!)।

Base टैग में इस file: प्रोटोकॉल को परिभाषित करना समस्या है। समाधान प्रोटोकॉल का उपयोग न करने के लिए है!


संदर्भ लिंक 1:Protocol-less URL Scheme:

यह बिल्कुल प्रकाश पढ़ने नहीं है, लेकिन पूरी तरह से योग्य section 4.2 of RFC 3986 URL हैं, जो प्रोटोकॉल (HTTP या HTTPS) पूरी तरह छोड़ के लिए प्रदान करता है। जब एक यूआरएल प्रोटोकॉल छोड़ा जाता है, तो ब्राउजर अंतर्निहित दस्तावेज़ प्रोटोकॉल का उपयोग करता है।


संदर्भ लिंक 2:Understanding Network Path Reference by Paul Irish:

* बेशक, आप फ़ाइल को स्थानीय रूप दिखाई देता है तो यह file:// प्रोटोकॉल के साथ फ़ाइल का अनुरोध करने की कोशिश करेंगे।


संदर्भ ऊपर समझाने कि // का उपयोग करते समय फाइल या संपत्ति तक पहुँचने किसी भी ब्राउज़र वर्तमान में जाना जाता यूआरएल योजना उपयोग करने के लिए अनुमति देगा।के बाद से IE8 खेल परिवर्तक, \\ बजाय // का उपयोग कर बेस टैग के लिए काम करेंगे के बाद से सभी ब्राउज़रों/परिवर्तित कर देंगे व्याख्या है कि मानक file:/// यूआरएल स्कीम (स्थानीय फ़ाइलों गर्भित), ब्राउज़र IE7 सहित के रूप में है!


पूर्ण HTML मार्कअप | काम कर डेमो:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Using Base Tag with Local Files IE8 and Modern Browser DEMO</title> 

    <!-- The name of this file is: test.html --> 
    <!-- The location of this HTML file on the hard drive is: C:\temp\html\test.html --> 

    <!-- This unusually constructed Base attribute tag uses two rules to have it work for Locally Hosted IE8 Files that are not server based. --> 
    <!-- First, the "URL Scheme" is based on "Network Path Reference" which means no Protocol is used. --> 
    <!-- Second, the "forward slashes" are changed to "back slashes". It's the syntax IE8 actually expects. --> 
    <!-- This entire method is also friendly for modern browsers showing these local files that are not server based. --> 
    <base href="\\c:\temp\resources\" /> 

</head> 
<body> 

    <p> 
    <!-- The location of this "image.jpg" on the hard drive is at: C:\temp\resources\image.jpg --> 
    <img src="image.jpg" alt="image" /> 
    </p> 

</body> 
</html> 
+0

@ फ़ूबायर, मैंने आपको एक समाधान, विस्तृत स्पष्टीकरण, और काम करने के लिए [** HTML डेमो **] (http://pastebin.com/wXUdqRG0) प्रदान करने के लिए अपना उत्तर दोबारा लिखा है। चीयर्स! – arttronics

+0

यह बहुत बढ़िया विवरण है - आप कैसे जानते थे ?? – ryandenki

+0

@ryandenki, बहुत लंबे समय पहले मैंने 'सी: \ वेबसाइट \ प्रोजेक्ट (ver1) \ index.html' का उपयोग किया जो स्थानीय ब्राउज़र के लिए ** IE8 को छोड़कर सभी ब्राउज़रों में सही ढंग से काम करता है। यह पता चला है कि आईई 8 में, मेरे कुछ सीएसएस को नजरअंदाज कर दिया गया था। मैं यह पता लगाने के लिए समस्या निवारण करता हूं कि मैंने फ़ोल्डर पथ के लिए * अवैध चरित्र * का उपयोग किया था, जो अन्य ब्राउज़रों को अनदेखा करने में प्रसन्नता थी, इसलिए कोई और '' '' '' '' 'नहीं था। तब यह था कि मैंने स्थानीय फाइलों के लिए आईई 8 पथ सीखा और फ़ोल्डर्स बहुत अलग हैं और उस जांच को महान जांच के साथ इलाज करते हैं। – arttronics

0

दुर्भाग्य से, ऐसा लगता है कि आईई 8 के मानक मोड फ़ाइल को संभाल नहीं लेते हैं: // यूआरआई आधार तत्व में है।

यदि आप अपने स्थानीय पृष्ठों के अंदर स्क्रिप्ट चला सकते हैं, तो मैं सुझाव दूंगा कि आप अपने सभी बाहरी तत्वों (एससीआरआईपीटी, आईएमजी, लिंक, आईफ्रेम, फ्रेम) के माध्यम से लूप के लिए कुछ सरल जावास्क्रिप्ट का उपयोग करें और किसी भी योजना-कम यूआरआई को ठीक करें (जिनके पास आपकी वांछित आधार का उपयोग नहीं है ": //")।

+0

उत्तर के लिए धन्यवाद। जैसा कि पोस्ट में उल्लिखित है, यह समस्या वास्तव में आईई 8 मानक मोड के लिए विशिष्ट है। दुर्भाग्यवश हमारे परिदृश्य में कस्टम स्क्रिप्ट चलाना नहीं है - हमें बेस को सही ढंग से सेट करने की आवश्यकता है ताकि गतिशील रूप से पृष्ठ सामग्री जोड़ा जा सके, रिश्तेदार यूआरएल के लिंक स्क्रिप्ट संदर्भ आदि। सभी उम्मीद के अनुसार काम करते हैं। – fubaar