HTML5 और फ़्रेमबॉर्डर


83

मैं एक HTML5 दस्तावेज़ पर एक iframe है। जब मैं मान्य करता हूं तो मुझे यह बताने में त्रुटि हो रही है कि विशेषता iframe frameBorderअप्रचलित है और इसके बजाय सीएसएस का उपयोग करना है।

मेरे पास यह विशेषता frameBorder="0"है क्योंकि यह एकमात्र तरीका था जिससे मैं यह पता लगा सकता था कि आईई में सीमा से कैसे छुटकारा पाया जाए, मैंने border:none;सीएसएस में बिना किसी भाग्य के कोशिश की । क्या इसे ठीक करने का कोई कंप्लेंट तरीका है?

धन्यवाद।

जवाबों:


60

HTML 5 फ्रेमवर्क, स्क्रॉलिंग, मार्जिन और मार्जिन (जैसे कि HTML 4.01 में समर्थित थे) जैसी विशेषताओं का समर्थन नहीं करता है। इसके बजाय, HTML 5 विनिर्देशन ने निर्बाध विशेषता पेश की है। निर्बाध विशेषता इनलाइन फ़्रेम को प्रकट करने की अनुमति देती है, हालांकि इसे युक्त दस्तावेज़ के भाग के रूप में प्रस्तुत किया जा रहा है। उदाहरण के लिए, सीमाएँ और स्क्रॉलबार दिखाई नहीं देंगे।

एमडीएन के अनुसार

frameborder HTML5 के बाद से अप्रचलित

मान 1(डिफ़ॉल्ट) इस फ्रेम के चारों ओर एक सीमा खींचता है। मान 0इस फ्रेम के चारों ओर की सीमा को हटा देता है, लेकिन आपको सीमाओं को नियंत्रित करने के लिए सीएसएस संपत्ति सीमा का उपयोग करना चाहिए।

जैसा कि ऊपर बोली गई है, आपको सीएसएस के साथ सीमा को हटा देना चाहिए ;
या तो इनलाइन ( style="border: none;") या आपकी स्टाइलशीट ( iframe { border: none; }) में।

कहा जा रहा है, वहाँ एक एकल iframe प्रदाता है कि उपयोग नहीं करता है प्रतीत नहीं होता है frameborder="0"। यहां तक ​​कि YouTube अभी भी विशेषता का उपयोग करता है और फ्रेमवर्क को अब और समर्थन नहीं करने पर iframes को पीछे की ओर संगत करने के लिए एक शैली विशेषता प्रदान नहीं करता है। यह कहना सुरक्षित है कि विशेषता जल्द ही कहीं नहीं जा रही है। यह आपको 3 विकल्प देता है:

  1. उपयोग करते रहें frameborder, बस यह सुनिश्चित करने के लिए कि यह काम करता है (अभी के लिए)
  2. सीएसएस का प्रयोग करें, "सही" बात करने के लिए
  3. दोनों का उपयोग करें। यद्यपि यह असंगतता की समस्या को हल नहीं करता है (केवल विकल्प 1 की तरह), यह हर ब्राउज़र में काम करता है और होगा और होगा

इस दशक पुराने उत्तर की पिछली स्थिति के रूप में:

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


31
तो क्या सीएसएस में फ़्रेमबॉर्डर = 0 का उत्पादन करने का कोई तरीका है?
जेडी आइजैक

1
यह वास्तव में कष्टप्रद है, मैं नवीनतम क्रोम का उपयोग कर रहा हूं और यह सिर्फ काम नहीं करता है। हालांकि फ्रेमबॉर्डर = "0" करता है।
RGBK

1
इसे फिर से देखते हुए, सीमलेस क्रोम एफएफ और सफारी पर काम करता है। इसे आइफ्रेम में इस तरह रखें: <iframe सहज
RGBK

9
आपका उपयोग करने वाला है border-width: 0px;, लेकिन मुझे डर है कि यह क्रॉस-ब्राउज़र संगत नहीं है iframesseamlessअभी भी सभी ब्राउज़रों द्वारा समर्थित नहीं है! यह उन कुछ HTML5 मुद्दों में से एक है जिन्हें आपको बस स्वीकार करना है। frameborder="0"सत्यापन के साथ नरक का उपयोग करें !
सोलोमन क्लॉसन

2
seamlessHTML5 कल्पना से हटा दिया गया है, इसलिए इसके लिए समर्थन कभी नहीं होगा। @ फॉरवॉच का जवाब अब सबसे अच्छा है।
rvighne

48

यहां अन्य पोस्टिंग के अनुसार , सबसे अच्छा समाधान सीएसएस प्रविष्टि का उपयोग करना है

style="border:0;"

6
मुझे लगता है कि वे सलाह देते हैं: border-width: 0pxटीबीएच। border: none;काम नहीं करेगा।
सोलोमन क्लॉसन

5
@ cnotethegr8 - यह IE और ओपेरा (वर्तमान संस्करण) में काम नहीं करता है, क्रोम, सफारी और / या फ़ायरफ़ॉक्स में परीक्षण नहीं किया गया है। मैं गंदे ब्राउज़रों के लिए परीक्षण करता हूं, क्योंकि अगर यह उन में काम करता है, तो यह दूसरों में काम करना लगभग सुनिश्चित करता है।
सुलैमान क्लॉसन

2
@SolomonClosson I test for the crappy browsers, because if it works in them, than it is almost sure to work in the others.मेरे भगवान भोले हैं। यदि आप यह सुनिश्चित करना चाहते हैं कि आपका ऐप एक ब्राउज़र में काम करता है, तो आपको उस ब्राउज़र में परीक्षण करना होगा , सादा और सरल। कोई गारंटी नहीं है, केवल quirks हैं।
जोनाथन ड्यूमाइन

1
त्वरित ध्यान दें कि 0px में इकाई निरर्थक है। मैं मार्जिन पसंद करता हूं: 0; या सीमा: 0; क्योंकि जब CSS की बात आती है तो 0px == 0em == 0% == 0।
csharpforevermore

1
अब यह seamlessकल्पना से हटा दिया गया है कि यह एकमात्र सही उत्तर है
rvighne

17

चूंकि frameborderविशेषता केवल IE के लिए आवश्यक है, इसलिए सत्यापनकर्ता के चारों ओर जाने का एक और तरीका है। यह एक हल्का तरीका है जिसे जावास्क्रिप्ट या किसी भी डोम हेरफेर की आवश्यकता नहीं है।

<!--[if IE]>
   <iframe src="source" frameborder="0">?</iframe>
<![endif]-->
<!--[if !IE]>-->
   <iframe src="source" style="border:none">?</iframe>
<!-- <![endif]-->

3
यह पूछे गए सवाल का सबसे अच्छा जवाब है। हालाँकि, HTML5 के अनुपालन का लक्ष्य (जो कार्य प्रगति पर है और बिना सूचना के बदल सकता है) उपयोगी नहीं है, खासकर जब यह आपको ऐसे ट्रिक्स का उपयोग करता है जो इस तरह के अनुपालन के अलावा किसी अन्य उद्देश्य की सेवा नहीं करते हैं और कोड को अधिक जटिल बनाते हैं। । frameBorder="0"यदि आप एक इनलाइन फ्रेम के चारों ओर एक सीमा नहीं चाहते हैं, तो इसका उपयोग करना सबसे अच्छा है ।
जुक्का के। कोर्पेला

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

विशेषता है : "मानक" एचटीएमएल 5 में w3.org/TR/html5/rendering.html#frames-and-framesets
जुक्का लालकृष्ण कोर्पेला

@ JukkaK.Korpela रुको, क्या? फिर ओपी को सत्यापन त्रुटि क्यों मिलेगी? ओह, क्षमा करें, आप जिस पृष्ठ से लिंक करते हैं वह है frameऔर frameset, नहीं iframe। विशेषता है पर अप्रचलित iframeतत्व; देख w3.org/TR/html5/obsolete.html#attr-iframe-frameborder
श्री लिस्टर

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


2

XHTML में लक्ष्य विशेषता चिपकाकर जावास्क्रिप्ट के साथ सत्यापनकर्ता को "मूर्ख बनाने" के लिए तकनीक का उपयोग करने के बारे में कैसे <a onclick="this.target='_blank'">?

  • ऑनोमेसिंग = "this.frameborder = '0'"

<iframe onload = " this.frameborder='0' " src="menu.html" id="menu"> </iframe>

या getElementsByTagName]("iframe")1 पेज पर सभी iframes के लिए इस विशेषता को जोड़ रहा है?

यह परीक्षण नहीं किया है क्योंकि मैंने कुछ ऐसा किया है जिसका अर्थ है कि IE में कुछ भी काम नहीं कर रहा है ९ से कम! :) तो, जबकि मैं इसे सुलझा रहा हूँ ... :)


0

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


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

हां, हालांकि IE7 में मेरे लिए सीमलेस काम नहीं कर रहा था इसलिए मेरी पोस्ट।
१४:५५ पर साड़ी

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