2009-04-16 12 views
78

इसके बारे में विरोधाभासी संदेश प्राप्त करना, उम्मीद है कि वे नहीं हैं। मैं कल्पना नहीं कर सकता कि इसके लिए समर्थन बंद हो जाएगा, क्योंकि एक गैज़िलियन साइटें उनका उपयोग करती हैं।क्या IFrames (HTML) अप्रचलित हैं?

उस के बारे में कुछ अतिरिक्त प्रश्न:

  1. क्यों वे इस टैग को हटा देना चाहिए?
  2. इसके लिए कोई विकल्प?

उत्तर

49

मेरी राय डब्ल्यू 3 सी ने सख्त एचटीएमएल और एक्सएचटीएमएल डॉक्टरों से डंपिंग आईफ्रेम में बंदूक कूद दी। सिद्धांत रूप में आप अपने दस्तावेज़ में विदेशी वस्तुओं को जोड़ने के लिए <object> तत्व का उपयोग करेंगे, लेकिन ब्राउज़र अंतर और सीमाओं ने इसे कई डेवलपर्स के लिए एक गैर-तिमाही बना दिया है। अधिक से अधिक व्यावहारिक एचटीएमएल 5 (जो अभी भी एक मसौदा है) के साथ, iframes वापस आ गए हैं और यहां तक ​​कि दो नए विशेषताएं भी हैं: seamless, और दिलचस्प sandbox

+0

बहुत बढ़िया, मुझे उम्मीद है कि ब्राउज़र AJAX फ़ाइल अपलोड का समर्थन करना शुरू कर देंगे ताकि हमें इसके लिए iframes या फ़्लैश का उपयोग करने की आवश्यकता न हो। – Xeoncross

+0

@ एक्सोनक्रॉस फ़ायरफ़ॉक्स और क्रोम करें: https://developer.mozilla.org/en/Using_files_from_web_applications – chesles

22

आईफ्रेम अप्रचलित नहीं हैं, लेकिन उनका उपयोग करने के कारण दुर्लभ हैं।

  • अपनी सामग्री की सेवा के लिए IFrames का उपयोग करके उस क्षेत्र में सामग्री तक पहुंचने के लिए "दीवार" बनाता है।
  • For crawlers like Google, It's not immediately clear that cotent in an iframe will be ranked as highly as if the content were simply part of the page. कई लोगों के लिए, इसका उपयोग करने के लिए पर्याप्त कारण नहीं है।
  • यह iframe jQuery, प्रोटोटाइप आदि जैसे उपकरणों से कम सुलभ के लिए डोम है .. iframes का उपयोग कर के लिए

कारण:

  • यह अन्य डोमेन से अन्य लोगों के सामान बंद walling के लिए बहुत अच्छा है, लेकिन यह आसानी से एकीकृत नहीं करता है। (स्टाइलशीट्स, जावास्क्रिप्ट इत्यादि ...)
  • मल्टीमीडिया को एकीकृत करना कभी-कभी एम्बेड टैग का उपयोग करने के विपरीत एक आईफ्रेम के माध्यम से आसान किया जा सकता है।
  • वास्तव में, जीमेल के मामले जैसे वास्तव में विशेष मामले जहां वे ध्वनि और इतिहास प्रबंधन के लिए इसका उपयोग कर रहे हैं।

मैं यह भी जवाब दूंगा कि iframes को हटाने की कोई आवश्यकता नहीं है, यह एक आवश्यक टैग है और थोड़ी देर के लिए होगा।

7

IFrames AJAX के साथ बहुत उपयोग किया जाता है। उदाहरण के लिए जीमेल, मुझे विश्वास है कि नौ छुपे हुए IFrames का उपयोग करता है।

+5

मैं पांच iframes गिनती हूं। कोई छुपा नहीं है, और वास्तव में, उनमें से एक जो लगभग पूरा विचार है। IFrames का उपयोग आमतौर पर अजाक्स के साथ नहीं किया जाता है (वैसे भी किसी भी बड़े ढांचे में नहीं)। जीमेल आईफ्रेम का उपयोग इस तरह की चीजों के लिए कर रहा है: इतिहास ट्रैकिंग, ध्वनि (विषम), और कुछ प्रकार के कैनवास ड्राइंग। – cgp

+0

मैं कुछ साल पहले पढ़ा गया एक लेख देख रहा था। –

72

के लिए समर्थन अभी भी HTML 5 में है, इसलिए मुझे नहीं लगता कि यह निकट भविष्य में बदल जाएगा।

अपने अन्य सवालों के जवाब देने के लिए:

  1. रों (के रूप में सामान्य रूप में फ्रेम) समय के सबसे अधिक उपयोगकर्ता के अनुकूल नहीं हैं: वे में सामग्री की आसान पहुँच की अनुमति नहीं देते
    • एक यूआरएल के माध्यम से फ्रेम (कम से कम फ्रेम के बाहर सामग्री खोने के बिना)।
    • अधिकतर "टेक्नोफोब" उपयोगकर्ता फ्रेम द्वारा परेशान हैं।
    • जहाँ तक मुझे पता के रूप में वे ब्राउज़रों
  2. वैकल्पिक गतिशील पेज पीढ़ी शामिल (एसएसआई, पीएचपी, रेल और इसी तरह) और जावास्क्रिप्ट/AJAX का उपयोग कर जैसे की सामग्री को बदलने के लिए प्रस्तुत करने के लिए धीमी गति से कर रहे हैं एक <div>

स्पष्ट है: मैं के बारे में एक अंतरफलक तत्व के रूप में बात कर रहा हूँ।अन्य सामान लोड करने के लिए एक छुपा तत्व नहीं है उदा। Google मेल करता है।

+28

+1 इस बिंदु के लिए कि Google अत्यधिक विशिष्ट उद्देश्यों के लिए iframes का उपयोग कर रहा है। – cgp

2

मैंने सामान्य फ्रेम्ससेट से इफ्रेम तक एक साइट बदल दी है क्योंकि सामान्य फ्रेम मुझे जो चाहिए वह नहीं कर सका। इसने कोडबेस के बाकी हिस्सों के साथ कोई समस्या नहीं पैदा की।

23

इफ्रेम पृष्ठ लेआउट के लिए अप्रचलित हैं। अच्छे सीएसएस लेआउट के बजाय उन्हें कभी भी इस्तेमाल न करें, यहां तक ​​कि टेबल-आधारित लेआउट भी बेहतर है।

iframes का उपयोग कर के लिए अच्छा कारण हैं:

  • विज्ञापन: उदाहरण के लिए ऐडवर्ड्स इस तकनीक का उपयोग करता है, यह encapsulating के लिए अच्छा है - विज्ञापन सीएसएस अपने पृष्ठ को नष्ट नहीं होंगे।
  • छिपा iframe: यह ट्रैकिंग, ajax-विकल्प, आदि
+33

*** एडवर्ड्स के लिए iframes का उपयोग न करें, यह TOS का उल्लंघन है। *** http://www.scribd.com/doc/97655/15- समुदाय- त्रुटियां-by-Google- विज्ञापन- प्रकाशक- यह- उल्लंघन- नियम- सेवा- सेवा – cgp

+34

altCognito: AdWords iframes का उपयोग करता है, मुझे नहीं:) मेरा मतलब किसी अन्य आईफ्रेम में एडवर्ड आइफ्रेम डालना नहीं था। – Thinker

+7

मुझे पता है कि यह एक आम गलती है (इसलिए सभी लेख) इसलिए मैं यह सुनिश्चित करने के लिए इसे ध्वजांकित करना चाहता था कि लोग समझें कि आप क्या कह रहे थे। – cgp

5

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

+0

इफ्रेम उन चीजों से निपटने के लिए जरूरी हैं जिन्हें आपको अपनी वेबसाइट और वेबसाइट्स के साथ ग्राहकों की वेबसाइटों में रखना होगा, कि उपयोगकर्ता का कोड तोड़ नहीं जाएगा। सीएसएस को आसानी से ओवरराइड किया जा सकता है और जेएस कभी-कभी संघर्ष (दुर्लभ मामलों में) का कारण बन सकता है, इसलिए "बंद सिस्टम" दृष्टिकोण के लिए यह सर्वोत्तम है। – vsync

5

वे कुछ परिस्थितियों में बेहद उपयोगी हो सकते हैं, लेकिन वे सीमित हैं। विशेष रूप से एकाधिक साइटों में सामान्य कार्यक्षमता एम्बेड करना।

उदाहरण के लिए मेरे पास एक क्लाइंट है जो कई स्कॉटिश सामान ई-कॉमर्स साइट चलाता है। इस के हिस्से के रूप में हमने आपके उपनाम या टार्टन्स की आपकी पसंद से संभव कबीले नामों का पता लगाने के लिए कुछ सरल अनुप्रयोग विकसित किए हैं (अगर आप चाहें तो चिल्लाएं लेकिन टार्टन हमारी अर्थव्यवस्था में सालाना $ 700 मिलियन के लायक हैं)। इसके पीछे डेटाबेस आश्चर्यजनक रूप से बड़ा है (कोर नामों और टार्टन्स टेबल में लगभग दस हजार पंक्तियां) और काफी नियमित रूप से अपडेट किया गया है।

तो हमारे पास एक वेबसाइट पर चलाने के लिए स्थापित एप्लिकेशन हैं और फिर इनफ्रेम का उपयोग करके हमारी अन्य वेबसाइटों में एम्बेड किए गए हैं, जिससे सरल जावास्क्रिप्ट पैरामीटर गुजर रहा है ताकि हम एम्बेडिंग साइट पर कार्यक्षमता के साथ टार्टन या कबीले के चयन को एकीकृत कर सकें। । Iframe को noborder के रूप में सेट किया गया है, इसलिए यह अंतिम उपयोगकर्ता के लिए पूरी तरह से निर्बाध दिखाई देता है।

बेशक ऐसा करने के अन्य तरीके होंगे, लेकिन आईफ्रेम का उपयोग सरल और मजबूत है। और यह निश्चित रूप से अप्रचलित नहीं है।

7

IFrames मृत नहीं हैं, लेकिन फ्रेमसेट/फ्रेम्स मर रहे हैं।

आईई (आईई 7/आईई 8) की अंतिम 2 रिलीज में फ्रेम्स में ज़ूमिंग (आईफ्रेम नहीं) ने विनाशकारी परिणाम बनाए हैं।

हर तरह से IFrames का उपयोग करें, लेकिन IMHO फ़्रेमसेट/फ्रेम्स से साफ़ रहें।

4

गूगल गैजेट का विवरण वर्तमान में iframes पर निर्भर करता है: http://code.google.com/apis/gadgets/docs/spec.html

वर्तमान में वे जावास्क्रिप्ट क्षुधा जो एकाधिक डोमेन/प्रदाताओं से खींच रहे हैं के लिए अलगाव प्रदान करने के लिए केवल आसान तरीका है।

तीसरे पक्ष से लोगों द्वारा अपनी वेबसाइटों पर एम्बेड किए जाने वाले कई विगेट्स iframes का उपयोग करते हैं।

हालांकि उनके पास उनकी कमी है, iframes वेब पर सामान्य समस्याओं का व्यावहारिक समाधान प्रदान करते हैं। मुझे लगता है कि वे आने वाले कुछ समय के लिए आसपास होंगे।

0

मैं ऐसी कंपनी के लिए काम करता हूं जो मेन्यू, सूचियों, सामग्री ब्लॉक इत्यादि को खींचने से सब कुछ के लिए फ्रेम का उपयोग करता है .नेट वेब फॉर्म की जटिलताओं को कवर करने के लिए। एप्लिकेशन बहुत धीमा है और केवल आईई पर चलता है। ऐसा मत करो।

5

पाठ्यक्रमों के लिए घोड़े ... <iframe> एस कुछ और की तरह हैं ... सही उद्देश्य के लिए वे सही उपकरण हैं; गलत उद्देश्य के लिए वे एक बदसूरत हैक, या बदतर हैं।

अजाक्स में, <div> एस अक्सर अधिक उपयुक्त कंटेनर होते हैं। कुछ स्थानों पर <iframe> एस द्वारा समर्थित, आपकी साइट के हिस्से के रूप में बाहरी सामग्री को पास करने की गतिविधि अनुचित है।

मेरी टीम दूसरे दिन एक < आइफ्रेम > इस्तेमाल किया एक आदर्श तरीका के रूप में उपयोगकर्ताओं को अपने HTML ई-मेल इतिहास तक पहुंच प्रदान कर - ई मेल पूरा < एचटीएमएल > पृष्ठ हैं, जिन्हें हम अपने वेब टेम्पलेट में आसानी से सम्मिलित करने के लिए चाहते थे थे । <iframe> एस उस डेटा को प्रस्तुत करने के लिए बिल्कुल सही थे] '।

दूसरी ओर, < आइफ्रेम > रों लगभग हमेशा या हटाया जाना चाहिए किसी भी उपयोगकर्ताओं द्वारा प्रदत्त सामग्री जो उत्पादन वापस साइट पर है, क्योंकि उस संदर्भ में वे एक प्रमुख सुरक्षा मुद्दा है में विकलांग।

2

अनुपालन और सुरक्षा समस्याएं आपको इफ्रेम का उपयोग करने के लिए भी प्रेरित कर सकती हैं; शॉपिंग कार्ट लोकप्रिय IFrame- आधारित कार्यान्वयन हैं जब आप कुछ वेब पेजों के हिस्से के रूप में चीजों के भुगतान प्रसंस्करण पक्ष के पूर्ण जिम्मेदारी के बिना एक शॉपिंग कार्ट को दृष्टि से शामिल करना चाहते हैं।

हम आम तौर पर हमारे ईकामर्स सामान और क्लाइंट को एकीकृत करने के लिए एक आईफ्रेम प्रदान करते हैं जैसे यह टर्नकी कैसे हो सकता है।

12

मैंने कई फ़ोरम देखे हैं जो ऑब्जेक्ट टैग को IFrame के प्रतिस्थापन के रूप में सुझाते हैं, जो शायद ज्यादातर मामलों में काम करता है।

उदाहरण के लिए, मेरे पास एक आईफ़्रेम में दिखाया गया एक पीडीएफ था (क्योंकि अन्य चीजें जिन्हें हमें पृष्ठ पर केवल पीडीएफ के अलावा दिखाने की ज़रूरत थी) और ऑब्जेक्ट का उपयोग करके इसे ठीक से प्रदर्शित करने में सक्षम था।

क्या था:

<iframe id="confirmed_pdf" class="current_pdf" src="/prescriptions/show_pdf?id=123" height="570" width="480"></iframe> 

बने:

<object id="confirmed_pdf" class="current_pdf" data="/prescriptions/show_pdf?id=123" type="application/pdf" height="570" width="480"> 
    <p>[Show this message if displaying the PDF did not work]</p> 
</object> 

लेकिन वस्तु उचित प्रतिस्थापन आवश्यकता को भरने के लिए पेज के ही पीडीएफ भाग मुद्रित करने के लिए सक्षम होने के लिए नहीं था।

एक iframe (, एक खिड़की के भीतर एक खिड़की मूल रूप से) पृष्ठ के भीतर अपने स्वयं के खिड़की की तरह है, और एक बार आप विंडो वस्तु मिलता है, आप उस पर .print() कॉल कर सकते हैं, जैसे:

jQuery("#confirmed_pdf").contentWindow.print(); 

आईफ्रेम में एक सामग्री है विन्डो प्रॉपर्टी, यही वह चीज है जो केवल उस भाग को प्रिंट कर सकती है। ऑब्जेक्ट में कोई सामग्री नहीं है विन्डो प्रॉपर्टी, इसलिए पृष्ठ के केवल अनुभाग को मुद्रित करने का कोई तरीका नहीं है।

तो ऐसा लगता है कि अगर आप कुछ प्रदर्शित करने के लिए केवल IFrame का उपयोग कर रहे हैं, तो ऑब्जेक्ट जैसे अन्य टैग इसके बजाए उपयोग किए जा सकते हैं। लेकिन अगर आपको कुछ तरीकों से आईफ्रेम की सामग्री से बातचीत करने की आवश्यकता है, तो IFrame आवश्यक हो सकता है।

संबंधित मुद्दे