लोग अभी भी इफ्रेम का उपयोग क्यों करते हैं? [बन्द है]


89

मेरे लिए iframes शुद्ध बुराई हैं (ठीक है, शायद इतना शुद्ध नहीं)। उन्हें लगता है कि बहुत सारी परेशानियाँ हैं। हां, आपकी पूरी साइट एक बार लोड होगी और फिर आप केवल एक पेज लोड कर सकते हैं। लेकिन लोगों ने इस उद्देश्य के लिए AJAX का आविष्कार किया।

मेरे साथ सबसे बड़ी समस्याओं में से एक यह iframeथा कि मैं किसी एक उपपृष्ठ का लिंक पेस्ट नहीं कर सकता था, क्योंकि URL कभी नहीं बदला (हाँ, मुझे पता है कि इसके लिए वर्कअराउंड है)। दूसरी बात, वेब खोज इंजनों को उस साइट को सही ढंग से अनुक्रमित करने में समस्या हो सकती है।

कभी-कभी इस साइटों की पहुंच बदतर होती है और कुछ ब्राउज़र भी उन्हें अनुचित तरीके से प्रदर्शित कर सकते हैं।

(I) फ्रेम के बिना लेआउट डिजाइन करने के बेहतर तरीके हैं। हर दिन मैं किसी को SO प्रश्नों पर पूछते हुए देख सकता हूं, जैसे "jQuery के साथ iframe का उपयोग कैसे करें?"।

तो आइफ्रेम के क्या लाभ हैं? अभी भी उनका उपयोग करने का क्या कारण हो सकता है? मैं सिर्फ यह जानना चाहूंगा कि क्यों :)

(चूंकि यह वास्तविक सवाल नहीं है, यह एक सीडब्ल्यू है)


मैं मोशे के साथ सहमत हूं। इफ्रेम्स का एकमात्र अन्य उपयोग इसके लिए है: प्राचीन वेब क्लाइंट जो आधुनिक सीएसएस या कुछ मालिकाना वातावरण में समर्थन नहीं करते हैं।
बोरिस हमानोव

इन दिनों, दुर्भाग्य से, हर ब्राउज़र में एक संगतता समस्या है! वे मानक नहीं हैं! div टैग में एक समस्या है, टेबल टैग में एक समस्या है और इसी तरह ... वे 100% संगत वेबसाइट डिजाइन करने के लिए हमारा समय खो देंगे। IE7 के साथ भी किसी वेबसाइट को संगत बनाने का अंतिम तरीका। एक iframe का उपयोग कर रहा है। 2016 में भी '(यदि आप मेरी वेबसाइट की स्थिति की जांच, आप IE7 से बहुत कुछ का दौरा देखेंगे एक बहुत लोग पुराने ब्राउज़र का उपयोग कर रहे !!!: iframe हर समस्या पैच कर सकते हैं।
महदी Jazini

जवाबों:


102

मैं 2 कारणों के बारे में सोच सकता हूं (फिलहाल) क्यों लोग अभी भी AJAX के बजाय iframes का उपयोग करेंगे:

1) iframes ने क्रॉस डोमेन ओरिजिन पॉलिसी (चित्र, स्क्रिप्ट और स्टाइल नहीं) को दरकिनार किया। यह अपेक्षाकृत सुरक्षित रूप से अन्य डोमेन नामों से साइटों / सामग्री में खींचने के लिए उपयोगी हो सकता है। मूल रूप से, यह अन्य डोमेन से डेटा को नेत्रहीन रूप से दिखाने में सक्षम बनाता है, बिना असीमित उपयोग के साथ उन्हें आपके पेज पर स्टम्पप करने देता है (जैसे कि JSONP ऐसा करने में सक्षम होगा)।

2) आप एक iframe से कई प्रकार के संसाधनों को लोड कर सकते हैं, न कि केवल कुछ माइम-प्रकार (आप अनुप्रयोग / जावास्क्रिप्ट, एप्लिकेशन / x-जावास्क्रिप्ट, पाठ / सीएसएस, पाठ / xml, छवि / भाषा, छवि के लिए अपेक्षाकृत सीमित हैं) / jpeg, स्क्रिप्ट / XHR, चित्र और स्रोत के साथ छवि / GIF।) उदाहरण के लिए, यदि मैं आपको एक पीडीएफ दिखाना चाहता हूं, तो मैं एक iframe खोल सकता हूं और Adobe Reader प्लगइन को आपको वह फाइल दिखाने दे सकता हूं। इसके अतिरिक्त, एक ही डोमेन में, अगर मैं एक स्क्रिप्ट, शैली और छवि को एक साथ पाइपलाइन करना चाहता हूं (पृष्ठ पर इनलाइन, छवि को डेटा यूआरआई होना होगा), मैं इसे एक iframe के साथ पूरा कर सकता हूं (और यदि यह उसी में है डोमेन, पोर्ट और प्रोटोकॉल मैं इसे जावास्क्रिप्ट के साथ भी एक्सेस कर सकता हूं)।

क्या आप जानते हैं कि Gmail iframes का एक सेट है? दृश्य भाग सिर्फ चतुर स्थिति है। इसके अतिरिक्त, कई OAuth कार्यान्वयन (ट्विटर, फेसबुक, Google, याहू!) आमतौर पर iframes का उपयोग किसी उपयोगकर्ता को उनके डोमेन पर एक सफल प्रमाणीकरण URL (उपयोगकर्ता लॉग्स के बाद के लिए) के साथ संबद्ध करने के लिए करते हैं।


2
Re # 1, लेकिन HTTP हेडर iframe को ब्लॉक कर सकता है .....
Pacerier

2
# 2 पुन <embed src="http://www.pdf995.com/samples/pdf.pdf" type="application/pdf">
:,

4
Re # 3, Gmail को iframes के बिना फिर से लिखा जा सकता है। तो क्यों लोग अभी भी आधुनिक ब्राउज़रों के लिए iframes का उपयोग करते हैं? सवाल अनुत्तरित रह जाता है।
पचेरियर

22

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

अधिकांश वेब विज्ञापन समाधान iframes पर आधारित होते हैं - क्योंकि वे सुरक्षा (क्रॉस-डोमेन पॉलिसी) देते हैं और स्क्रीन पर अलग-अलग आयत होते हैं जिन्हें पूरी तरह से तीसरे पक्ष की सामग्री और स्क्रिप्टिंग द्वारा प्रबंधित किया जा सकता है (एक सामान्य उपयोग का मामला विज्ञापन है)।

IFRAMES का एक और आधुनिक उपयोग AJAX अनुप्रयोगों के इतिहास (सामान्य बैक बटन वर्कअराउंड) का प्रबंधन है।

फ्रेम IFRAMES के खराब संस्करण हैं। उनका उपयोग घट रहा है।


1
यह बहुत सरल है, और विज्ञापनों का अच्छा उदाहरण :)
oneworld

15

यदि किसी उपयोगकर्ता के पास जावास्क्रिप्ट अक्षम है, तो ajax नहीं होने पर iframes काम करेगा। यह सवाल से बाहर नहीं है, यह देखते हुए कि लोग नोस्क्रिप्ट जैसी चीजों का उपयोग करते हैं ।


4
यह सच है, लेकिन iframe को बदलने / जोड़ने / हेरफेर करने के लिए ज्यादातर मामलों में जावास्क्रिप्ट की आवश्यकता होती है (2 को छोड़कर, मैं इसके बारे में सोच सकता हूं, लक्ष्य से लिंक करना और लक्ष्य पर <form>पोस्ट करना)।
डैन बीम

सही; यहां तक ​​कि, जेफ का उपयोग करने के लिए iframe बिंदुओं को बदलने के लिए आमतौर पर एक लाइन की आवश्यकता होती है, जैसा कि अधिक जटिलता के विपरीत है XMLHttpRequest
रेनडिएरन

7

मैं उन्हें अजाक्स वेबसाइटों पर उपयोग करता हूं, जब मुझे पृष्ठ को फिर से लोड किए बिना फ़ाइलों को अपलोड करने की आवश्यकता होती है।


@Mwizak Ajax को कोणीय सहित सभी प्रकार की जावास्क्रिप्ट को कवर करना चाहिए।
कोडरूट जूल

3

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


तुम क्यों XMLHttpRequest (साथ हेडर नहीं जोड़ सकते हैं नहीं दिख रहा w3.org/TR/XMLHttpRequest/#the-setrequestheader-method ) जब तक डोमेन, प्रोटोकॉल, और बंदरगाहों (मेल नहीं खाते जो साधन आप से एक अलग समस्या है हेडर)?
डैन बीम

बिंदु की बात यह है कि यह 2 अलग-अलग अनुप्रयोग है, आमतौर पर यहां तक ​​कि 2 पूरी तरह से अलग तकनीकें। एक प्रमाणीकरण को संभालता है और दूसरा प्रमाणीकरण टिकट के लिए इंजेक्ट किए गए हेडर को पकड़ता है (या ज़रूरत पड़ने पर इसे बनाता है)।
क्रिस वैन डर मस्त

3

उनका उपयोग करने के लिए बहुत सारे तकनीकी कारण हैं (विशेषकर डैन बीम द्वारा उल्लिखित सुरक्षा मुद्दा)।

आपको जो नहीं करना चाहिए, वह iframes का उपयोग करता है "जैसे फ्रेम", केवल iframe को अपडेट करके नए पृष्ठों पर नेविगेशन करना। जैसा कि आप कहते हैं, यह नेविगेशन को बुकमार्क करने योग्य / लिंक करने योग्य होने से रोकता है, सामान्य नेविगेशन बटन का जवाब देता है, और ओपन-इन-न्यू-टैब जैसे उपयोगी लिंक खर्च प्रदान करता है।

लेकिन यह अजीबोगरीब नहीं है। आप अधिक से अधिक पृष्ठों को देख सकते हैं जहां नेविगेशन को नई सामग्री के साथ लाया जा रहा है XMLHttpRequestऔर इसे मुख्य सामग्री div के लिए लिख रहा है innerHTML। अक्सर यह jQuery load()और चतुर-चालाक आकर्षक एनिमेशन के साथ किया जाता है । यह नेविगेशन को बुरी तरह से iframe-used-as-फ़्रेम, या वास्तव में पुराने-स्कूल फ़्रेमसेट के रूप में तोड़ता है। यह बहुत शर्म की बात है कि कई वेब लेखक इस रणनीति का उपयोग कर इसे एक सुपर-आधुनिक वेब डिज़ाइन पद्धति के रूप में मानते हैं, जब वास्तव में यह कल के तिरछे फ्रेम पर सिर्फ एक नई त्वचा है।

आप दोनों मामलों में इसके आसपास काम कर सकते हैं, लेकिन इसका मतलब है कि आपको #खंड पहचानकर्ता भाग में एक दृश्य संग्रह करना होगा और उचित हैश-नेविगेशन का समर्थन करना होगा, जो तुच्छ नहीं है। तब भी आपको खोज इंजन जैसे गैर-जेएस एजेंटों के साथ समस्याएँ आती हैं; आप दोनों का समर्थन करने के लिए एक समानांतर- ?आधारित और #आधारित नेविगेशन होना चाहिए। यह एक दर्द है और सबसे ज्यादा परेशान नहीं करता है।


एचटीएमएल 5 में इतिहास एपीआई के लिए तत्पर हैं, जो सामग्री को पुनः लोड करने या पीछे / आगे बटन को तोड़ने के बिना लाने की अनुमति देगा।
रेयान

2

फ़्रेमसेट HTML 5 के रूप में पुराने हैं, और कभी-कभी आपको किसी साइट के भीतर किसी अन्य साइट के साथ एक फ़्रेम होना चाहिए। इसके अलावा AJAX इतना ही कर सकता है। बिना किसी iframe के https के माध्यम से किसी अन्य डोमेन पर एक साइट पर एक फ़ाइल अपलोड करने का प्रयास करें। AJAX वहाँ आपकी मदद नहीं करेगा।


2

अन्य कारणों के अलावा, iframeमेरे आवेदन में मेरा एक विशिष्ट उपयोग है । दुर्भाग्य से, मेरे मामले में लक्ष्य ब्राउज़र है Internet Explorer 6। मुझे अपने वेब पृष्ठों में एक पाद लेख और एक शीर्ष लेख होना चाहिए। इस पृष्ठ का मुख्य भाग स्क्रॉल करने योग्य है।

हालांकि, IE6 में एक बग है जहां मैं सीएसएस संपत्ति का उपयोग करके तत्वों के divशीर्ष पर एक तत्व प्रदर्शित नहीं कर सकता । इस प्रकार, मुझे इस समस्या से बचने के लिए हैक के रूप में उपयोग करने की आवश्यकता है।selectz-indexiframe

बेशक, यह iframeकेवल और केवल चिंता का विशिष्ट उपयोग है IE6...


1

जावास्क्रिप्ट WYSIWYG संपादक iframes का उपयोग करते हैं, क्योंकि यह सबसे आसान और सबसे अच्छा तरीका है। उदाहरण के लिए TinyMCE इसका उपयोग करता है:

http://tinymce.moxiecode.com/


1

मैं एक सोशल नेटवर्क का निर्माण कर रहा था और मैं देख रहा हूं कि आइफ्रेम एक मिनी प्रोफाइल की तरह दिखाने के लिए या किसी दूरस्थ सर्वर पर सामग्री के साथ एकीकृत करने के लिए अन्य लोगों की वेबसाइट पर विगेट्स के लिए उपयोगी है। इसे बनाने का सबसे सरल तरीका लगता है। मुझे पता है कि कुछ विजेट जावास्क्रिप्ट का उपयोग करते हैं। इसके अलावा iframe पद्धति के साथ सत्र सामान्य की तरह साइट पर जाने के लिए समान है, इसलिए बटन जैसे महान।


0

कई फॉर्मेटेड टेक्स्ट एडिटर (जैसे टाइनीएमसीई, HTMLArea) को आइफ्रेम के रूप में लागू किया जाता है।


इसकी वजह है फायरफॉक्स IIRC।
एलेक्स

0

iFrames कुछ मामलों के लिए ठीक है, एक्स-डोमेन-अनुरोधों के रूप में, या मापदंडों के माध्यम से एक स्रोत पर डेटा पोस्ट करना। लेकिन जब मैं पूरे डोमेन पर डेटा एक्सेस करना चाहता हूं, तो मैं CSS-files का उपयोग करना पसंद करता हूं - वे params स्वीकार कर सकते हैं, कुकीज़ सेट कर सकते हैं, पेज में सामग्री जोड़ सकते हैं (और पहले: और बाद में) और विज़ुअल फीडबैक दें।

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