क्यों कोई क्लाइंट-साइड HTML में टैग शामिल नहीं है?


18

मेरे पास एक और प्रोग्रामर द्वारा दूसरे दिन मुझसे एक सवाल किया गया था। मुझे याद है (बहुत समय पहले) बहुत ही सोच रहा था। ब्राउज़र-साइड में शामिल टैग को कभी क्यों नहीं माना गया? या ये था?

विशेष रूप से एक टैग के साथ जो ब्राउज़र को अन्य स्रोतों से अतिरिक्त HTML शामिल करने का निर्देश देता है। उदा <include src="http://server/foo/bar.html">। कई लोग जावास्क्रिप्ट कॉल करेंगे और innerHTMLउसी को पूरा करने के लिए भरेंगे , जब जावास्क्रिप्ट इंजन के बाहर एक ही ब्राउज़र द्वारा पूरा किया जा सकता है।

नेस्टेड <HTML>एस <BODY>(यानी) होने के लिए यह दर्दनाक होगा लेकिन हमें उस पहलू पर कहीं भी विचार करना होगा।


क्या बाहरी संस्थाएँ आपको यह पहले से नहीं देती हैं?
पीटर टेलर

60 के दशक में अपने आविष्कार से भी ट्रांसकॉर्पोरेशन को हाइपरटेक्स्ट की एक मुख्य विशेषता माना जाता था। तो मुझे यकीन है कि यह माना जाता था ...
एलेक्स Feinman

जवाबों:


12

क्या मैं पृथ्वी पर अंतिम व्यक्ति हूं जो ( नेटस्केप 4-केवल ) layerऔर ilayerटैग को याद करता है ?

नेटस्केप 4 को भी अनुमति दीdiv टैग को एक srcविशेषता की , जिसने एक ही काम पूरा किया।

नेटस्केप ने उन्हें डब्ल्यू 3 सी के लिए प्रस्तुत किया, जिन्होंने उन्हें शामिल करने के लिए नहीं चुना - iframeइसके बजाय उपयोग करें ।


मैं वास्तव में NS4 को याद करता हूं लेकिन उन विशेषताओं को याद नहीं करता। बहुत बुरा, मैं अभी भी सामग्री यह बहुत पार ब्राउज़र जावास्क्रिप्ट बी एस बचा होगा।
जेई क्यू

मुझे याद है कि NS4 को इतने जुनून के साथ नफरत है कि मेरा पहला गैर-आईएसपी ईमेल पता ihatenetscape.com पर एक मुफ्त खाता था। आह, अच्छा समय: D
Wildpeaks

नोट परतें काफी ग्राहक पक्ष में शामिल नहीं थीं क्योंकि उनके पास अभी भी documentसमान उत्पत्ति नीति के अधीन एक अलग वस्तु थी ; वे प्रभावी रूप से एक स्थितीय iframe थे।
बॉब

14

ब्राउज़र-साइड में शामिल टैग को कभी क्यों नहीं माना गया? या ये था?

यह निश्चित रूप से हर नौसिखिया वेब लेखक द्वारा अनुरोध किया गया था, जिसने सर्वर साइड पर काम नहीं किया था, अभी भी www-html सूची में शुरुआती दिनों में शामिल है। लेकिन उन दिनों W3 वेब लेखक के दबाव को पूरी तरह से नजरअंदाज कर खुश थे।

यदि क्रॉस-साइट समावेश की अनुमति दी गई तो यह एक सुरक्षा आपदा होगी। आप उपयोगकर्ता के बैंक से एक पृष्ठ में खींच सकते हैं और इससे सामग्री पढ़ सकते हैं। (मूल रूप से, डोम स्क्रिप्टिंग सीमित थी, लेकिन आप तब भी पढ़ सकते थे document.links, document.imagesस्क्रिप्टिंग फ़ंक्शन लक्ष्य पृष्ठ द्वारा गिरा दिए गए थे, आदि तब से आप वही कर सकते हैं जो आपको आयातित सामग्री के साथ पसंद है।)

यदि क्रॉस-साइट समावेश की अनुमति नहीं थी ... तो फिर सर्वर-साइड में इस सुविधा का कोई लाभ नहीं होगा। यह अधिक होगा, क्लाइंट के लिए धीमी गति से काम करना जिससे सर्वर बेहतर तरीके से निपट सके। इसके विपरीत <iframe>, एक शामिल पृष्ठ लोडिंग को ब्लॉक करना होगा। SSI हर तरह से श्रेष्ठ होगा।


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

1
यह सर्वर से काफी अधिक होगा। मुझे यकीन नहीं है कि पृष्ठ लोड को ब्लॉक करने की आवश्यकता क्यों होगी, यह async सामग्री-भरण के साथ पूर्ण पृष्ठ लोड की अनुमति दे सकता है। बेशक यह केवल सीमित सर्वर से पुल की अनुमति देने या एक डोमेन डोम की अनुमति देने के लिए ब्राउज़रों द्वारा सीमित किया जा सकता है।
जे क्यू कतार

मुझे नहीं पता कि यह सुरक्षा आपदा कैसे है। मैं अभी सर्वर साइड पर एक बैंक पेज पढ़ सकता हूं और दूसरे पेज पर इसे थूक सकता हूं - क्या यह एक आपदा है? हो सकता है, लेकिन निश्चित रूप से सुरक्षा से संबंधित नहीं। सुरक्षा आपदा एक अलग डोमेन से कुकीज़ पढ़ना होगा। इस क्लाइंट पक्ष के बिना सर्वर साइड वन के समान ही शामिल होगा। यहाँ कोई समस्या नहीं है।
सेग

आप सर्वर साइड पर एक बैंक पेज लाने की कोशिश कर सकते हैं, लेकिन आपका अनुरोध अनसुना कर दिया जाएगा ताकि आप किसी भी रसदार जानकारी को डाउनलोड न कर सकें। क्लाइंट की ओर से एक अनुरोध में कुकीज़ और HTTP प्रमाणीकरण टोकन शामिल हैं; यदि आप इस तरह के अनुरोध से प्रतिक्रिया पढ़ सकते हैं तो आप उपयोगकर्ता को पूरी तरह से प्रतिरूपण कर सकते हैं।
बोबिन्स

@bobince: क्या कोई कारण है कि क्लाइंट की तरफ से कुकीज़ और HTTP प्रमाणीकरण टोकन को शामिल करना होगा? क्लाइंट-साइड के लिए मुझे जो प्राथमिक उपयोग परिदृश्य दिखाई देगा, उसमें स्थैतिक पृष्ठ सामग्री के कैशिंग में सुधार करना शामिल होगा। यदि सोलह पृष्ठों में सभी समान हेडर और पाद लेख शामिल हैं, तो क्लाइंट-साइड का उपयोग करके पहले लोड करने के लिए आवश्यक समय बढ़ जाएगा, लेकिन शेष पंद्रह को लोड करने के लिए समय कम करें। उपयोग के मामले जहां सबसे अधिक उपयोगी होगा वे ठीक वही होंगे जहां डेटा "शामिल" होना स्थिर होगा और इस तरह इसकी आवश्यकता नहीं होगी ...
सुपरकैट

10

उन्होने किया। यह <frameset>टैग बन गया । लंबे समय के बाद, उन्होंने <iframe>टैग नहीं जोड़ा ।

अधिकांश प्रारंभिक वेब सर्वर समर्थित सर्वर-साइड शामिल हैं, इसलिए क्लाइंट-साइड टेक्स्टुअल शामिल होने की संभावना अनावश्यक थी, यह देखते हुए कि वही कार्यक्षमता फ़्रेम के साथ भी उपलब्ध थी।


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

5
मैं असहमत हूं - मुझे लगता है कि वास्तव में यही फ्रेम होता है। और HTML को छोड़कर और क्या फ़्रेम हैं?
जैको प्रीटोरियस

5
फ़्रेमों में HTML शामिल हैं, सीधे नहीं - यह अंतर है।
mbq

4
@Xepoch: ... a के साथ <iframe>। यही कारण है कि यह क्या है के लिए । यह वास्तव में बहुत एक से अलग नहीं है <div>के साथoverflow:auto;
greyfade

3
<Iframe> तत्व मूल रूप से कहता है "निर्दिष्ट HTML दस्तावेज़ लोड करें और इसे यहां चिपकाएं"। आप इसे अजाक्स के बजाय चुनेंगे यदि आप चाहते हैं कि दस्तावेज़ को तुरंत लोड किया जाए, जावास्क्रिप्ट कॉल पर नहीं ... फ़्रेम एचटीएमएल का लेआउट नहीं है। डिव, पी, ब्र - ये सभी तत्व लेआउट के लिए उपयोग किए जाते हैं। आप लेआउट के लिए फ़्रेम का उपयोग नहीं करते (या आपको वैसे भी नहीं करना चाहिए)।
जैको प्रीटोरियस सिप

3

ऑब्जेक्ट अभी भी एक फ्रेम में रेंडर करता है और आपके पास "डेटा" के लिए कोई डोम एक्सेस नहीं है। डेवलपर्स को वर्षों पहले क्या दिया जाना चाहिए था, एक सरल टैग के साथ स्निपेट्स को शामिल करने का एक तरीका है। यहां तक ​​कि अगर इस टैग में डोमेन सैंडबॉक्स प्रतिबंध थे, तो यह सुविधाओं को कंपाइल करने, रखरखाव में सुधार करने और ब्राउज़र कैशिंग का लाभ लेने के लिए बहुत उपयोगी होगा।

मुझे पता है कि बहुत सारे अच्छे jquery प्लगइन्स हैं जो ऐसा करते हैं और बहुत सारे सर्वर साइड स्क्रिप्ट करते हैं, लेकिन इस तरह के टैग का समर्थन नहीं करने का कोई अच्छा कारण नहीं है। IMO एक अच्छा सवाल है "क्यों कोई ग्राहक पक्ष टैग शामिल नहीं है?"

अगर आपको यहां jquery पसंद है तो एक अच्छा क्लाइंट साइड स्क्रिप्ट शामिल है: inc: एक सुपर-छोटे क्लाइंट-साइड में जावास्क्रिप्ट jQuery प्लगइन शामिल हैं


आपका उत्तर केवल वही है जो लगता है कि सिर पर कील ठोक रहा है। क्या आप सी में #include जैसा कुछ सोच रहे हैं? यह बिल्कुल उसी तरह का है जैसे "क्लाइंट-साइड शामिल" का अर्थ मेरे लिए है - एक अभिन्न दस्तावेज़ सामग्री के रूप में HTML दस्तावेज़ के भीतर मनमाने ढंग से HTML स्निपेट (बल्कि संपूर्ण HTML दस्तावेज़ों सहित) के लिए एक सुविधा। हालाँकि, इसे प्री-पार्सिंग स्टेज के बजाय HTML के अभिन्न अंग के रूप में डिज़ाइन किया जा सकता है - पूछने वाले ने सुझाया <src = "...">> वाक्यविन्यास इसके साथ सही होगा।
स्टीवर्ट

इसे जोड़ने की समस्या अब पिछड़ी अनुकूलता होगी। बेशक, यह व्याख्या नहीं करता है कि यह HTML के मूल डिजाइन में क्यों शामिल नहीं किया गया था।
स्टीवर्ट

इसे वैकल्पिक रूप से एसजीएमएल / एक्सएमएल की एक विशेषता के रूप में डिजाइन किया जा सकता था ....
स्टीवर्ट

2

आपने कोशिश की है

<object  type="text/html" data="page.html" height="500" width="500">
What I see if that didn't work 
</object>

मुझे लगता है कि यह अधिकांश ब्राउज़रों में लागू है।


कोशिश करने की जरूरत होगी।
जे क्यू कतार

2

एक <include>टैग पर वेरिएंट को वास्तव में HTML के प्रारंभिक इतिहास में माना जाता था , लेकिन वे कभी बहुत दूर नहीं हुए।


1
हालाँकि उस शब्द के शब्दार्थ <शामिल हैं> टैग आज के फ्रेम / iframe / ऑब्जेक्ट के समान थे - इसमें एक HTML दस्तावेज़ शामिल होगा , और न केवल पाठ / कोड के स्निपेट या C के #include के रूप में यादृच्छिक टैग होंगे।
टोमैस पोसिशेक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.