2010-09-15 7 views
20

मैंने अनगिनत कारणों को सुना है कि एचटीएमएल फ्रेम का उपयोग क्यों नहीं किया जा सकता है, उनकी पहुंच की कमी, सामान्य में यूएक्स में कमी, उनकी पूरी तरह से अक्षम/अप्रत्याशित, या उन्हें पुराना हो रहा है।मुझे HTML फ्रेम का उपयोग कब करना चाहिए?

यह सब दो सवाल करने के लिए मुझे लाता है:

  1. नफरत के इस आम सहमति के साथ-साथ iframes लागू होता है?
  2. क्या आपके परिदृश्य में फ्रेम/iframes का उपयोग करने के लिए यह परिदृश्य है?
+0

नहीं, iframes स्पष्ट रूप से सभी नफरत से मुक्त हैं। (क्योंकि वे एचटीएमएल 5 का हिस्सा हैं, जबकि फ्रेम/फ्रेमसेट नहीं हैं) –

+0

यह सुनकर खुशी हुई, क्योंकि मैंने कुछ परियोजनाओं में व्यक्तिगत रूप से iframes का उपयोग किया है XD – Moses

+0

मुझे यह भी लगता है कि फ्रेमसेट के वैध उपयोग हैं, हालांकि दुर्लभ हैं। – recursive

उत्तर

13

(1) स्वाभाविक रूप से नहीं। iframes के कई उपयोग मामले हैं जो फ्रेम की समस्याओं से ग्रस्त नहीं हैं। वे किसी भी समय किसी अन्य सुरक्षा संदर्भ से दस्तावेज़ में मिश्रण करना चाहते हैं, या स्क्रिप्टिंग और शैलियों के बिना जो मूल पृष्ठ उपयोग कर रहे हैं, वे उपयोगी होते हैं।

हालांकि, यह 'एक फ्रेम की तरह एक iframe का उपयोग' करना संभव है: अलग आइफ्रेम क्षेत्रों में पेज को विभाजित करने के लिए, एक नौवहन गड़बड़ है कि बुकमार्क के साथ अच्छी तरह से नहीं चलता है बनाने पार फ्रेम लिंक के साथ, ओपन-इन-न्यू-टैब इत्यादि

(2) मैं आज किसी भी चीज़ के लिए फ्रेम का उपयोग नहीं करता। उनके लिए एक सीमित उपयोग केस था जिसमें बड़ी मात्रा में पेज सामग्री को पकड़ना था जिसे आप प्रत्येक नेविगेशन पर पुनः लोड नहीं करना चाहते हैं। लेकिन इन दिनों हम पेज के हिस्से को अपडेट करने के लिए बस XMLHttpRequest का उपयोग करेंगे।

फिर भी, पेज-बदलते लिंक को सुलभ बनाने के लिए बिना किसी देखभाल के (बिना हैश-इतिहास का उपयोग करके और प्रत्येक हैश-लिंक के लिए स्थिर-लिंक एनालॉग होने के कारण, वास्तविक <a> से जुड़ा हुआ है जो कि मध्य-क्लिक एट अल के प्रति प्रतिक्रिया देता है) एक पृष्ठ जो XMLHttpRequest का उपयोग करके स्वयं को अपडेट/नेविगेट करता है, दृढ़ता से नकारात्मक उपयोगिता, अभिगम्यता और एसईओ प्रभावों के साथ फ्रेम की कई नेविगेशन समस्याओं को फिर से बना देगा।

मुझे यह थोड़ा दुखी लगता है कि कई लेखक चमकदार, छेड़छाड़, "आधुनिक" एनिमेटेड वेबसाइटें बना रहे हैं, जो jQuery के load() या अपने आप के समान ही उपयोग करके, प्राचीन, नफरत वाले फ्रेम के सभी बुरे व्यवहारों को प्रदर्शित करते हैं।

+0

से बेहतर होगा तो आप कल्पना करने के लिए हानि में हैं ... "आप किसी अन्य सुरक्षा संदर्भ से दस्तावेज़ में मिश्रण करना चाहते हैं ..." - मैं नहीं कर सका ' जब मैं इसे पढ़ता हूं तो मदद करता हूं लेकिन हंसता हूं। यह एक शर्म की बात है कि बहुत से लोग सोचते हैं कि यह एक अच्छा विचार है। जीत के लिए फ़िशिंग और क्लिकजैकिंग? – jww

+0

@ नोलोडर: ठीक है, हाँ; यह उस मामले में करना समझ सकता है जहां अभिभावक पृष्ठ पर उच्च विश्वास है और बाल फ्रेम सामग्री कम विश्वास है, क्योंकि बच्चे से माता-पिता के संभावित हमलों अधिक सीमित हैं (मॉडलिंग पॉपअप/डाउनलोड/आदि और चुपके नेविगेशन, फ़िशिंग/क्लिकजैकिंग)। कम भरोसेमंद साइट पर एक फ्रेम में लॉगिन फॉर्म जैसे उच्च-ट्रस्ट आइटम डालना वास्तव में एक वास्तविक गलती है। – bobince

4

(1) नहीं। Iframes के लिए वैध उपयोग हैं, जहां आधुनिक ब्राउज़र के साथ आज फ्रेम का उपयोग करने का कोई कारण नहीं है।

(2) कभी भी फ्रेम का उपयोग न करें; एक ही प्रभाव उत्पन्न करने के लिए अन्य बेहतर आसान समाधान उपलब्ध हैं।

संपूर्ण साइट एम्बेड करने पर केवल iframes का उपयोग करें सबसे तार्किक विकल्प है। हालांकि दुर्लभ, अवसर होते हैं जब यह समझ में आता है।

संक्षेप में, फ्रेम/फ्रेमसेट/नोफ्रेम टैग एचटीएमएल 5 से बाहर किए जाने का एक कारण है, लेकिन आईफ्रेम ले जाएगा।

(उदाहरण) यदि साइट ए साइट बी से एक पृष्ठ शामिल करने के लिए बाध्य है (साइट ए से आने के लिए प्रतीत होता है) तो साइट बी सीएसएस और जावास्क्रिप्ट कर सकते हैं और आम तौर पर पूरी तरह से साइट ए को नली कर सकते हैं। यह एक वैध कारण है।

+0

अपना दूसरा बिंदु ध्यान में रखते हुए। यदि आप किसी अन्य साइट के अंदर एक संपूर्ण साइट को प्रदर्शित करने का प्रयास करते समय iframes का उपयोग करेंगे, उदाहरण के लिए एक सीएमएस। साइट ए बैकऑफिस सामग्री और साइट बी पोर्टल को प्रबंधित करने की इजाजत दे रहा है जो उस मनोरंजक सामग्री को रखता है। तो यह देखने के लिए कि यह कैसा दिखता है, साइट ए पर आईफ्रेम प्रदान करें? –

+1

हां, यह iframes के लिए वैध उपयोग केस की तरह लगता है। यह एक नियंत्रित वातावरण है और आपको पहले के संदर्भ में एक अलग साइट प्रदर्शित करने की आवश्यकता है। – digitaldreamer

1

यदि किसी कारण से आपके पास "नेस्टेड फॉर्म" है।

कहें कि आपके पास एक उत्पाद संपादन फ़ॉर्म है और इस फ़ॉर्म के अंदर आपके पास एक अन्य रूप वाला क्षेत्र है जो आपको बताता है कि आप इस उत्पाद के लिए न्यूजलेटर भेजने के लिए ग्राहकों की एक सूची दर्ज कर सकते हैं।

ग्राहक उत्पाद से संबंधित नहीं हैं और किसी उत्पाद के साथ कोई डेटाबेस संबंध नहीं है।वे उत्पाद से अलग-अलग इकाइयां हैं।

इस मामले में मैं एक आईफ्रेम को एक ग्राहक जोड़ने के साथ क्रेट करता हूं और बटन सबमिट करता हूं जो IFrame के अंदर फ़ॉर्म सबमिट करता है।

मुझे IFrame का उपयोग करने से वर्णित परिदृश्य को लागू करने का कोई बेहतर तरीका नहीं मिला। और हाँ, मेरे पास एक ही पृष्ठ पर दोनों रूपों की आवश्यकता है, और न्यूज़लेटर फॉर्म को उत्पाद संपादन फ़ॉर्म के अंदर रखा जाना चाहिए। व्यापार मालिकों द्वारा निर्धारित की जरूरत है।

+0

+1 चीजों को सरल रखने के लिए, एसिंक्रोनस HTTP अनुरोधों का उपयोग करने के बजाय, केवल व्यक्तिगत फ्रेम से सीधा फॉर्म पोस्ट करने की अनुमति दें, फिर सिंक्रोनस पेज केवल उस फ्रेम के भीतर रीफ्रेश की अनुमति दें, इस प्रकार अन्य फ्रेम में किसी भी अन्य सामग्री को परेशान न करें। मेरे दिमाग में, यह कारण है कि