जवाबों:
सभी तकनीकों के साथ, इसके उतार-चढ़ाव हैं। यदि आप एक ठीक से विकसित साइट के आसपास पाने के लिए एक आइफ्रेम का उपयोग कर रहे हैं, तो निश्चित रूप से यह खराब अभ्यास है। हालांकि कभी-कभी एक आइफ्रेम स्वीकार्य होता है।
एक iframe के साथ मुख्य समस्याओं में से एक बुकमार्क और नेविगेशन के साथ करना है। यदि आप इसे अपनी सामग्री के अंदर केवल एक पृष्ठ एम्बेड करने के लिए उपयोग कर रहे हैं, तो मुझे लगता है कि यह ठीक है। यह एक iframe के लिए है।
हालाँकि मैंने देखा है कि आइफ्रेम के साथ भी दुर्व्यवहार हुआ है। इसका उपयोग आपकी साइट के अभिन्न अंग के रूप में नहीं किया जाना चाहिए, बल्कि साइट के भीतर सामग्री के एक टुकड़े के रूप में किया जाना चाहिए।
आमतौर पर, यदि आप इसे बिना किसी आईफ्रेम के कर सकते हैं, तो यह एक बेहतर विकल्प है। मुझे यकीन है कि यहां अन्य लोगों के पास अधिक जानकारी या अधिक विशिष्ट उदाहरण हो सकते हैं, यह सब उस समस्या के लिए आता है जिसे आप हल करने की कोशिश कर रहे हैं।
उस के साथ, यदि आप HTML तक सीमित हैं और PHP, ASP.NET आदि जैसे बैकएंड तक कोई पहुंच नहीं है, तो कभी-कभी एक iframe ही आपका एकमात्र विकल्प है।
window.postMessage()
, उदाहरण के लिए सहयोगी iframe ऑटो-आकार बदलना।
वे बुरा अभ्यास नहीं कर रहे हैं, वे सिर्फ एक और उपकरण हैं और वे लचीलापन जोड़ते हैं।
मानक पृष्ठ तत्व के रूप में उपयोग के लिए ... वे अच्छे हैं, क्योंकि वे कई पृष्ठों पर सामग्री को अलग करने का एक सरल और विश्वसनीय तरीका हैं। विशेष रूप से उपयोगकर्ता-जनित सामग्री के लिए, यह "सैंडबॉक्स" आंतरिक पृष्ठों के लिए उपयोगी हो सकता है iframe
इसलिए एक खराब मार्कअप मुख्य पृष्ठ को प्रभावित नहीं करता है। नकारात्मक पक्ष यह है कि यदि आप स्क्रॉलिंग की कई परतों (एक ब्राउज़र के लिए, एक iframe
) के लिए परिचय करते हैं, तो आपके उपयोगकर्ता निराश हो जाएंगे। जैसे adzm ने कहा, आप iframe
प्राथमिक नेविगेशन के लिए उपयोग नहीं करना चाहते हैं , लेकिन उनके बारे में एक टेक्स्ट / मार्कअप के रूप में सोचें, जिस तरह से वीडियो या किसी अन्य मीडिया फ़ाइल को एम्बेड किया जाएगा।
पृष्ठभूमि की घटनाओं की स्क्रिप्टिंग के लिए, चुनाव आम तौर पर एक छिपे हुए iframe
और XmlHttpRequest
वर्तमान पृष्ठ के लिए सामग्री लोड करने के बीच होता है । अंतर यह है कि iframe
एक पेज लोड उत्पन्न करता है, इसलिए आप अधिकांश ब्राउज़रों के साथ ब्राउज़र कैश में वापस और आगे बढ़ सकते हैं। ध्यान दें कि Google, जो XmlHttpRequest
सभी जगह उपयोग करता है, iframe
कुछ मामलों में भी उपयोग करता है ताकि उपयोगकर्ता ब्राउज़र इतिहास में आगे और पीछे जा सके।
उनकी कमियों को समझे बिना उनका उपयोग करना 'बुरा व्यवहार' है। Adzm की पोस्ट ने उन्हें बहुत अच्छा बनाया है।
फ्लिपसाइड पर, जीमेल पृष्ठभूमि में iFrames का भारी उपयोग करता है, जिसमें से कुछ के लिए यह कूलर सुविधाओं (जैसे स्वचालित वीडियो अपलोड) है। यदि आप iFrames की सीमाओं से अवगत हैं, तो मुझे विश्वास नहीं है कि आपको उनका उपयोग करने के बारे में कोई भी कंपटीशन महसूस करना चाहिए।
कई परिस्थितियों में उनके साथ काम करने के बाद, मुझे वास्तव में यह विचार आया है कि iframe की गोटो स्टेटमेंट के बराबर वेब प्रोग्रामिंग है। यही है, आम तौर पर कुछ से बचने के लिए। एक साइट के भीतर वे कुछ हद तक उपयोगी हो सकते हैं। हालांकि, क्रॉस-साइट, वे लगभग हमेशा किसी भी चीज के लिए एक बुरा विचार हैं लेकिन सामग्री का सबसे सरल।
संभावनाओं पर विचार करें ... यदि पैरामीटर सामग्री के लिए उपयोग किया जाता है, तो उन्होंने एक इंटरफ़ेस बनाया है। और एक पेशेवर साइट में, उस इंटरफ़ेस को एक SLA और संस्करण प्रबंधन की आवश्यकता होती है - जिसे ऑनलाइन प्राप्त करने के लिए लगभग हमेशा भीड़ में अनदेखा किया जाता है।
यदि सक्रिय सामग्री के लिए उपयोग किया जाता है - जो स्क्रिप्ट को होस्ट करता है - तो वहाँ (अलग) क्रॉस डोमेन स्क्रिप्ट प्रतिबंध हैं। कुछ को हैक किया जा सकता है, लेकिन शायद ही कभी लगातार। और अगर आपकी तैयार की गई सामग्री को संवादात्मक होने की आवश्यकता है, तो यह फ्रेम से परे ऐसा करने के लिए संघर्ष करेगा।
यदि लाइसेंस प्राप्त सामग्री के साथ उपयोग किया जाता है, तो भाग लेने वाली साइटों को मेजबानों के बीच बैंड से बाहर पात्रता जानकारी को स्थानांतरित करने की आवश्यकता होती है।
इसलिए, हालांकि, साइट के भीतर कभी-कभी उपयोगी होते हैं, लेकिन वे मैशअप के लिए अनुपयुक्त होते हैं। आप असली पोर्टल्स और पोर्ट्लेट्स को देखना बेहतर समझते हैं। इससे भी बदतर, वे हर वेब शौकिया के प्रिय हैं - कई तकनीकी प्रबंधक ने कई समस्याओं के समाधान के रूप में उन पर घेराबंदी की है। वास्तव में, वे अधिक बनाते हैं।
मेरे अनुभव के आधार पर iframe के लिए एक सकारात्मक पक्ष तीसरे पक्ष के कोड को कॉल करते समय, इसमें एक जावास्क्रिप्ट को कॉल करना शामिल हो सकता है जो एक Document.write();
कमांड को कॉल करता है । जैसा कि आप जानते हैं, इन आदेशों को अतुल्यकालिक रूप से नहीं कहा जा सकता है कि इसे पार्स (डोम पार्सर आदि) कैसे किया जाता है। इसका एक उदाहरण है http://sourceforge.net/projects/phpadsnew/ मैंने अपनी साइट को गति देने में मदद के लिए iframes का उपयोग किया है क्योंकि phpadsnews को कई कॉल आए थे और साइट अलग-अलग रेंडर करने के लिए आगे बढ़ने से पहले प्रतिक्रिया का इंतजार कर रही थी। पृष्ठ के कुछ हिस्से। एक iframe के साथ मैं साइट को पेज के अन्य हिस्सों को रेंडर करने की अनुमति देने में सक्षम था और अभी भी Document.write()
phpads की कमांड को अतुल्यकालिक रूप से कॉल करता हूं। रोकना और बंद करना।
आइफ्रेम लोगों के लिए निश्चित रूप से उपयोग होता है। आप अपने पृष्ठ पर मौसम नेटवर्क विजेट को और कैसे डालेंगे? एकमात्र तरीका यह है कि उनके एक्सएमएल को पकड़ा जाए और इसे पार्स किया जाए, लेकिन तब निश्चित रूप से आपको मौसम के खराब होने वाले ग्राफिक्स को फेंकने के लिए शर्तों की आवश्यकता होती है ... वास्तव में इसके लायक नहीं है, लेकिन अगर आपके पास समय हो तो क्लीनर को रास्ता दें।
मूल फ्रेमसेट मॉडल (फ्रेमसेट और फ्रेम-तत्व) एक प्रयोज्य दृष्टिकोण से बहुत खराब थे। IFrame vas एक बाद के आविष्कार जो मूल फ्रेमसेट मॉडल के रूप में कई समस्याओं के रूप में नहीं था, लेकिन यह इसकी खामी है।
यदि आप उपयोगकर्ता को IFrame के अंदर नेविगेट करने की अनुमति देते हैं, तो लिंक और बुकमार्क अपेक्षा के अनुरूप काम नहीं करेंगे (क्योंकि आप बाहरी पेज के URL को बुकमार्क करते हैं, लेकिन iframe के URL को नहीं)।
जब आपका मुख्य पृष्ठ HTTP प्रोटोकॉल में लोड होता है और आपके पृष्ठ के कुछ हिस्सों को HTTPS प्रोटोकॉल में काम करने की आवश्यकता होती है, तो iFrame jsons हाथ नीचे मार सकता है।
विशेष रूप से, यदि आपका डेटाटाइप मूल रूप से json नहीं है और सर्वर पर json में अनुवादित होने की आवश्यकता है और क्लाइंट पर अनुवादित जैसे कि जटिल html में।
तो nope - iFrame बुराई नहीं है।
वे खराब नहीं हैं, लेकिन वास्तव में सहायक हैं। मुझे कुछ समय पहले एक बड़ी समस्या थी, जहाँ मुझे अपना ट्विटर फीड एम्बेड करना था और यह सिर्फ md इसे एक ही पेज पर नहीं करने देता था, इसलिए मैंने इसे एक अलग पेज पर सेट किया, और इसे iframe के रूप में रखा।
वे अच्छे भी हैं क्योंकि सभी ब्राउज़र (और फ़ोन ब्राउज़र) उनका समर्थन करते हैं। उन्हें एक बुरा अभ्यास नहीं माना जा सकता है, जब तक कि आप उन्हें सही तरीके से उपयोग नहीं करते हैं।
यह ध्यान देने योग्य है कि iframes आपके उपयोगकर्ताओं के इंटरनेट कनेक्शन या iframe की सामग्री की गति की परवाह किए बिना, एक छोटा (0.3 या तो) कारण होगा, लेकिन आपके पृष्ठ डाउनलोड की गति में ध्यान देने योग्य मंदी। यह कुछ ऐसा नहीं है जिसे आप स्थानीय स्तर पर परीक्षण करते समय देखेंगे। वास्तव में, किसी पृष्ठ में जोड़े गए किसी भी तत्व के लिए यह सही है, लेकिन iframes इससे अधिक खराब लगते हैं।
मैंने देखा कि IFRAMEs ने डायनेमिक संदर्भ मेनू बनाने के लिए एक आसान तरीके के रूप में बहुत सफलतापूर्वक लागू किया है, लेकिन उस वेब-ऐप के लक्षित दर्शक केवल इंटरनेट एक्सप्लोरर उपयोगकर्ता थे।
मैं कहूंगा कि यह सब आपकी आवश्यकताओं पर निर्भर करता है। यदि आप यह सुनिश्चित करना चाहते हैं कि आपका पृष्ठ हर ब्राउज़र पर समान रूप से अच्छा काम करे, तो IFRAME से बचें। यदि आप एक संकीर्ण और प्रसिद्ध दर्शकों (जैसे स्थानीय इंट्रानेट पर) को लक्षित कर रहे हैं और आपको IFRAME का उपयोग करने में लाभ दिखाई दे रहा है तो मैं कहूंगा कि ऐसा करना ठीक है।