क्या IFrames (HTML) अप्रचलित हैं? [बन्द है]


90

उस बारे में विरोधाभासी संदेश प्राप्त करना, आशा है कि वे नहीं हैं। मैं इसके लिए समर्थन की कल्पना नहीं कर सकता, क्योंकि एक गजिल साइट्स उनका उपयोग करती है।

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

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

वे अप्रचलित नहीं हैं: softwareengineering.stackexchange.com/questions/144515/… । वैकल्पिक stackoverflow.com/questions/8702704/...
माइकल Freidgeim

जवाबों:


53

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


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

@Xeoncross फ़ायरफ़ॉक्स और क्रोम कार्य करें: developer.mozilla.org/en/Using_files_from_web_applications
jches

2
अपडेट: html5 से सेमल रहित विशेषता को हटा दिया गया है। देखें: caniuse.com/#feat=iframe-seamless
Gabe

76

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

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

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

स्पष्ट होने के लिए: मैं <iframe>एक इंटरफ़ेस तत्व के रूप में बात कर रहा हूं । Google मेल करता है जैसे अन्य सामान लोड करने के लिए एक छिपा तत्व नहीं है।


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

25

पेज लेआउट के लिए iframes अप्रचलित हैं । अच्छे सीएसएस लेआउट के बजाय कभी भी उनका उपयोग न करें, यहां तक ​​कि टेबल-आधारित लेआउट भी बेहतर है।

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

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

35
*** ऐडवर्ड्स के लिए आइफ्रेम का उपयोग न करें, यह टीओएस का उल्लंघन है। *** scribd.com/doc/97655/…
cgp

37
altCognito: ऐडवर्ड्स iframes का उपयोग करता है, मेरा नहीं :) मेरा मतलब यह नहीं था कि किसी अन्य आइफ्रेम में एडवर्ड iframe डालना।
विचारक

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

5
यदि किसी अन्य डोमेन से ली जाने वाली जटिल सामग्री को शामिल करना आवश्यक है, तो इफ्रेम एक होना चाहिए, और वर्तमान पृष्ठ के सीएसएस या जेएस कोड के साथ हेरफेर नहीं किया जाना चाहिए।
विस्कॉन्सिन

4
आप जिस बारे में बात कर रहे हैं उसका iframes से कोई लेना-देना नहीं है। बिंदु है - आप एक नेस्टेड, बाहरी ब्राउज़िंग संदर्भ में लाने के लिए एक iframe का उपयोग करते हैं। आप इसका उपयोग 'पेज लेआउट' के लिए नहीं करते हैं। अगर मुझे एक नेस्टेड ब्राउज़िंग संदर्भ की आवश्यकता है - मैं दुनिया में इसके बजाय "अच्छे CSS लेआउट" का उपयोग कैसे करूंगा? इसका कोई मतलब नहीं है।
क्रिस बी

24

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

Iframes का उपयोग करने के कारण:

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

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


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 में एक ContentWindow प्रॉपर्टी है, जो कि केवल उस हिस्से को प्रिंट करना संभव बनाता है। ऑब्जेक्ट में एक ContentWindow प्रॉपर्टी नहीं है, इसलिए केवल पेज के अनुभाग को प्रिंट करने का कोई तरीका नहीं है।

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


7

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


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

मैं अभी एक लेख के द्वारा जा रहा था जिसे मैंने कुछ साल पहले पढ़ा था।
जॉन टॉपले

7

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

IE के पिछले 2 रिलीज (IE7 / IE8) फ्रेम्स में ज़ूमिंग (IFrames नहीं) ने विनाशकारी परिणाम पैदा किए हैं।

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


5

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


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

5

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

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

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

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


5

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

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

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

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


4

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

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

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

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


2

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


2

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

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


0

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.