আইফ্রেমগুলি কি 'খারাপ অনুশীলন' হিসাবে বিবেচিত হয়? [বন্ধ]


286

লাইন বরাবর কোথাও আমি ধারণাটি গ্রহণ করেছি যে iframes ব্যবহার করা 'খারাপ অভ্যাস'।

এটা কি সত্য? এগুলি ব্যবহার করার পক্ষে কী কী উপকারিতা / বিদ্যা?

উত্তর:


217

সমস্ত প্রযুক্তির মতো এটিরও উত্থান-পতন রয়েছে। আপনি যদি সঠিকভাবে বিকাশযুক্ত সাইটের আশেপাশের জন্য যদি একটি আইফ্রেম ব্যবহার করে থাকেন তবে অবশ্যই এটি খারাপ অভ্যাস। তবে কখনও কখনও একটি iframe গ্রহণযোগ্য।

বুকমার্ক এবং নেভিগেশনের সাথে ইফ্রামের সাথে প্রধান সমস্যাগুলির একটি। আপনি যদি আপনার সামগ্রীর ভিতরে কোনও পৃষ্ঠা এম্বেড করার জন্য এটি ব্যবহার করে থাকেন তবে আমার মনে হয় এটি ঠিক আছে। এটিই কি ইফ্রামের জন্য।

তবে আমি দেখেছি আইফ্রেমেসগুলিও আপত্তিজনকভাবে ব্যবহার করা হয়েছে। এটি কখনই আপনার সাইটের অবিচ্ছেদ্য অংশ হিসাবে ব্যবহার করা উচিত নয়, তবে কোনও সাইটের মধ্যে সামগ্রীর অংশ হিসাবে।

সাধারণত, যদি আপনি এটি কোনও আইফ্রেম ছাড়াই করতে পারেন তবে এটি একটি ভাল বিকল্প। আমি নিশ্চিত যে এখানে অন্যদের কাছে আরও তথ্য বা আরও সুনির্দিষ্ট উদাহরণ থাকতে পারে, এটি সমস্ত সমস্যার সমাধান করার চেষ্টা করছেন to

এর সাথে বলা হয়েছে, আপনি যদি এইচটিএমএল এর মধ্যে সীমাবদ্ধ থাকেন এবং পিএইচপি বা এএসপি.এনইটি ইত্যাদির মতো ব্যাকএন্ডে অ্যাক্সেস না পান তবে কখনও কখনও আইফ্রেমে আপনার একমাত্র বিকল্প হয়।


23
"যদি আপনি এইচটিএমএল-এর মধ্যে সীমাবদ্ধ থাকেন এবং পিএইচপি বা এএসপি.এনইটি ইত্যাদির মতো ব্যাকএন্ডে অ্যাক্সেস না পান, কখনও কখনও আইফ্রেমে আপনার একমাত্র বিকল্প হয়" ... এটি সত্য নয়। আপনি jquery এজ্যাক্সের মাধ্যমে ডেটা পেয়ে এবং তারপরে সেই ডেটা দিয়ে একটি ডিভ পপুলেটে আপনার পৃষ্ঠায় বাহ্যিক সামগ্রী এম্বেড করতে পারেন।
বিকাশকারী

53
@ developer747 - যদি বাহ্যিক সামগ্রী কারণে অন্য কোনো সাইটে হয় যে কাজ করবে না একই উৎপত্তি নীতি । কিছু অস্পষ্ট ক্ষেত্রে, দূরবর্তী সাইটটি JSONP সমর্থন করতে পারে ; কিন্তু সম্ভবত না।
পিটার ভি। মার্চ

2
আমি মনে করি প্রাক্তন ফ্রেমসেটের তুলনায় iframes অনেক কম দরকারী কারণ iframes ব্যবহারকারীর দ্বারা পুনরায় আকার দেওয়া যাবে না - তবে আমি এইচটিএমএল 5 তে বিদ্যমান না হওয়ায় আমি কোনও ম্যানুয়াল ছাড়া অন্য কোনও ফ্রেমের সেট ব্যবহার করব না। উদাহরণ: গেম প্রস্তুতকারকের ম্যানুয়াল
ডোমিনো

15
এটি উল্লেখ করা উচিত যে ইফ্রেমেস বর্তমানে নেস্টেড সিএসএস স্কোপ সংজ্ঞায়নের একমাত্র উপায়। তারা বাইরের ডকুমেন্ট থেকে অভ্যন্তরীণ মার্কআপ, বিন্যাস, শৈলী এবং জাভাস্ক্রিপ্ট * আলাদা করে দেয় যা অনেকগুলি ব্যবহারের ক্ষেত্রে এবং অ্যাপ্লিকেশনগুলিতে কার্যকর। * জাভাস্ক্রিপ্টটি বিচ্ছিন্ন নয় যদি অভ্যন্তরীণ নথিটি বাইরেরটির সাথে উত্স ভাগ করে; অন্যদিকে, বিভিন্ন উত্স থেকে দস্তাবেজগুলি এখনও ব্যবহার করে যোগাযোগ করতে পারে window.postMessage(), উদাহরণস্বরূপ সহযোগী iframe অটো-রাইজিং বাস্তবায়ন করতে।
টোবিয়া

1
আইফ্রেমটি খারাপ! পাশাপাশি সহায়তা করতে পারে
ড্যানিয়েলভি

75

তারা খারাপ অনুশীলন নয়, তারা কেবল অন্য একটি সরঞ্জাম এবং তারা নমনীয়তা যুক্ত করে।

স্ট্যান্ডার্ড পৃষ্ঠার উপাদান হিসাবে ব্যবহারের জন্য ... তারা ভাল, কারণ তারা বেশ কয়েকটি পৃষ্ঠায় সামগ্রী আলাদা করার সহজ এবং নির্ভরযোগ্য উপায়। বিশেষত ব্যবহারকারীর দ্বারা উত্পাদিত সামগ্রীর জন্য, "স্যান্ডবক্স" অভ্যন্তরীণ পৃষ্ঠাগুলি iframeএত দুর্বল মার্কআপে কার্যকর হতে পারে যা মূল পৃষ্ঠাকে প্রভাবিত করে না। খারাপ দিকটি হ'ল আপনি যদি স্ক্রলিংয়ের একাধিক স্তর (ব্রাউজারের জন্য একটি, এর জন্য একটি iframe) প্রবর্তন করেন তবে আপনার ব্যবহারকারীরা হতাশ হবেন। অ্যাডজম যেমন বলেছিল, আপনি iframeপ্রাথমিক নেভিগেশনের জন্য কোনও ব্যবহার করতে চান না , তবে তাদের কোনও ভিডিও বা অন্য কোনও মিডিয়া ফাইল এম্বেড করা হবে তার সমতুল্য একটি পাঠ্য / মার্কআপ হিসাবে ভাবেন।

স্ক্রিপ্টিং ব্যাকগ্রাউন্ড ইভেন্টগুলির জন্য পছন্দটি সাধারণত কোনও লুকানো iframeএবং XmlHttpRequestবর্তমান পৃষ্ঠার জন্য সামগ্রী লোড করার মধ্যে থাকে। পার্থক্যটি হ'ল iframeকোনও পৃষ্ঠা লোড উত্পন্ন করে, তাই আপনি বেশিরভাগ ব্রাউজারগুলির সাহায্যে ব্রাউজার ক্যাশে পিছনে এবং এগিয়ে যেতে পারেন। লক্ষ্য করুন যে গুগল, যারা XmlHttpRequestসমস্ত জায়গা জুড়ে ব্যবহার করে, কোনও iframeক্ষেত্রে ব্যবহারকারীকে ব্রাউজারের ইতিহাসে পিছনে এবং এগিয়ে যেতে দেয় এমন কিছু ক্ষেত্রেও এটি ব্যবহার করে ।


11
আমি মনে করি এটি উল্লেখ করা জরুরী যে iframes অন্য ডোমেনের একটি পৃষ্ঠায় একটি ডোমেন থেকে কোনও পৃষ্ঠা এম্বেড করার জন্য ব্যবহার করা যেতে পারে। যদি এম্বেড করা পৃষ্ঠাটি ব্যবহারকারীদের কুকিজ সহ অনুসরণ করতে এবং হোস্ট ডোমেন থেকে সেই তথ্যটি রাখতে চায়, তবে আপনার একমাত্র বিকল্প হ'ল ডোমেনের নিয়ন্ত্রণে জেএস থাকায় একটি আইফ্রেম ব্যবহার করা হবে।
নিকোলাস লিওনার্ড

@ নিকোলাসলিওনার্ড একটি ভাল উদাহরণ হ'ল আপনি স্থানীয় স্টোরেজ ভিত্তিক ক্যাশে পৃষ্ঠার তালিকাটিকে এমন একটি স্ক্রিপ্ট তৈরি করে স্থানীয় স্টোরেজ ভিত্তিক ক্যাশে জোর করতে ব্যবহার করতে পারেন যা সাবপেজটি লোকালস্টোরে রয়েছে তা সনাক্ত করে। তারপরে, ডকুমেন্ট.এটি স্থানীয় স্টোরেজ থেকে থাকলে তা লিখুন, এবং যদি সেই উপ পৃষ্ঠায় কোনও আইফ্রেমে যুক্ত না হন। সেই সাবপেজটিতে, সাবপেজগুলি এইচটিএমএল এলিমেন্টের আউটরটিচটিএমএল লোকস্টোরেজে সঞ্চয় করার জন্য একটি স্ক্রিপ্ট রয়েছে। এই পদ্ধতিটি ব্যবহারের সত্যিকারের ভাল কারণ এটি আপনাকে একটি লোডিং স্ক্রিনে যুক্ত করতে দেয় allows

আমি একমত নই, তবে আমি এটিকে হ্রাস করতে পারি না, কারণ এটি একটি গুরুত্বপূর্ণ পিওভ।
উইকফোর্ফ

28

তাদের ত্রুটিগুলি না বুঝে এগুলি ব্যবহার করা 'খারাপ অভ্যাস'। অ্যাডজম পোস্টটি তাদের খুব ভাল পরিমাণে যোগ করে।

ফ্লিপসাইডে, জিমেইল এর কয়েকটি শীতল বৈশিষ্ট্যগুলির জন্য পটভূমিতে আইফ্রেমগুলির ভারী ব্যবহার করে (যেমন স্বয়ংক্রিয় ফাইল আপলোডের মতো)। আপনি যদি আইফ্রেমগুলির সীমাবদ্ধতা সম্পর্কে সচেতন হন তবে আমি বিশ্বাস করি না যে সেগুলি ব্যবহার সম্পর্কে আপনার কোনও বোধ অনুভব করা উচিত।


18

তাদের সাথে অনেক পরিস্থিতিতে কাজ করার পরে, আমি সত্যিই ভাবতে এসেছি যে iframe এর ওয়েব প্রোগ্রামিংটি গোটো স্টেটমেন্টের সমতুল্য। এটি হ'ল সাধারণত কিছু এড়ানো যায়। একটি সাইটের মধ্যে তারা কিছুটা কার্যকর হতে পারে। যাইহোক, ক্রস-সাইট, কন্টেন্টের সহজতম ব্যতীত কোনও কিছুর জন্য এগুলি প্রায়শই খারাপ ধারণা।

সম্ভাবনাগুলি বিবেচনা করুন ... যদি প্যারামিটারাইজড সামগ্রীর জন্য ব্যবহার করা হয় তবে তারা একটি ইন্টারফেস তৈরি করেছে। এবং একটি পেশাদার সাইটে, সেই ইন্টারফেসটির জন্য একটি এসএলএ এবং সংস্করণ পরিচালনা প্রয়োজন - যা অনলাইনে যাওয়ার জন্য প্রায় সবসময়ই তাড়াহুড়ো করে উপেক্ষা করা হয়।

যদি সক্রিয় সামগ্রীর জন্য ব্যবহৃত হয় - ফ্রেমগুলি যে হোস্ট স্ক্রিপ্ট - তবে সেখানে (পৃথক) ক্রস ডোমেন স্ক্রিপ্ট বিধিনিষেধ রয়েছে। কিছু হ্যাক হতে পারে, তবে খুব কমই ধারাবাহিকভাবে। এবং যদি আপনার ফ্রেমযুক্ত সামগ্রীর ইন্টারঅ্যাকটিভ হওয়ার দরকার হয় তবে ফ্রেম ছাড়িয়ে এটি করার জন্য লড়াই করা হবে।

যদি লাইসেন্সযুক্ত সামগ্রী সহ ব্যবহার করা হয়, তবে অংশগ্রহণকারী সাইটগুলি হোস্টগুলির মধ্যে ব্যান্ডের বাইরে এনটাইটেলমেন্ট তথ্য সরিয়ে নেওয়ার প্রয়োজনে বোঝা হয়ে থাকে।

সুতরাং, যদিও কোনও সাইটের মধ্যে অন্তর্নিহিত কার্যকর, তারা ম্যাসআপগুলিতে বরং অসমর্থিত। আপনি বাস্তব পোর্টাল এবং পোর্টলেটগুলি দেখতে আরও ভাল। সবচেয়ে খারাপ, তারা প্রতিটি ওয়েব অপেশাদারের প্রিয়তম - অনেকগুলি প্রযুক্তি ব্যবস্থাপক তাদেরকে অনেক সমস্যার সমাধান হিসাবে চুপচাপ ফেলেছেন। আসলে তারা আরও তৈরি করে।


10

আমার অভিজ্ঞতার উপর ভিত্তি করে তৃতীয় পক্ষের কোডগুলি কল করার সময় iframe এর পক্ষে একটি ইতিবাচক দিকটি রয়েছে, এর মধ্যে জাভাস্ক্রিপ্ট কল করা জড়িত থাকতে পারে যাতে Document.write();কমান্ড থাকে calls আপনারা জানেন যে, এই আদেশগুলি কীভাবে পার্স করা হয় (ডম পার্সার ইত্যাদির কারণে) তত্ক্ষণাতীতভাবে কল করা যায় না। এর একটি উদাহরণ হ'ল http://sourceforge.net/projects/phpadsnew/ আমি phpadsnews- এ একাধিক কল আসার কারণে আমাদের সাইটের গতি বাড়ানোর জন্য iframes ব্যবহার করেছি এবং সাইটটি বিভিন্ন রেন্ডার করার আগে প্রতিক্রিয়াটির অপেক্ষায় ছিল পৃষ্ঠার অংশ। একটি ইফ্রামের সাহায্যে আমি সাইটের পৃষ্ঠার অন্যান্য অংশগুলি রেন্ডার করার অনুমতি দিতে সক্ষম হয়েছি এবং এখনও Document.write()পিচপ্যাডের কমান্ডটিকে অবিচ্ছিন্নভাবে কল করতে পারি। প্রতিরোধ এবং জেএস লকিং।


8

অবশ্যই iframes ভাবেন জন্য ব্যবহার আছে। আপনি কীভাবে আপনার পৃষ্ঠায় আবহাওয়া নেটওয়ার্কগুলির উইজেটটি রাখবেন? আর একমাত্র উপায় হ'ল তাদের এক্সএমএল ধরে এটি পার্স করা, তবে অবশ্যই আপনার পার্টেন্টেন্ট ওয়েদার গ্রাফিক্স ছুঁড়ে ফেলার জন্য শর্ত প্রয়োজন ... সত্যিকার অর্থে এটি মূল্যবান নয়, তবে আপনার যদি সময় থাকে তবে ক্লিনার।


6

মূল ফ্রেমসেট মডেল (ফ্রেমসেট এবং ফ্রেম-উপাদান) ব্যবহারের দিক থেকে খুব খারাপ ছিল। আইফ্রেমে পরবর্তী কোনও আবিষ্কার যা মূল ফ্রেমসেট মডেলের মতো সমস্যা ছিল না তবে এটির অপূর্ণতা রয়েছে।

আপনি যদি ব্যবহারকারীকে আইফ্রেমের অভ্যন্তরে নেভিগেট করার অনুমতি দেন তবে লিঙ্কগুলি এবং বুকমার্কগুলি প্রত্যাশার মতো কাজ করবে না (কারণ আপনি বাইরের পৃষ্ঠার ইউআরএল বুকমার্ক করেন তবে আইফ্রেমের URL নয়)।


1
দ্বিমত পোষণ করতে হবে ... এর মতো একটি বিস্তৃত মন্তব্য মোটেই যোগ্য নয়।
দাওসি

5

যখন আপনার প্রধান পৃষ্ঠাটি এইচটিটিপি প্রোটোকল এবং আপনার পৃষ্ঠার অংশগুলিতে এইচটিটিপিএস প্রোটোকলে কাজ করার দরকার পড়ে, আইফ্রেম জেসোনপকে হাতছাড়া করতে পারে।

বিশেষত, যদি আপনার ডেটা টাইপটি স্থানীয়ভাবে জসন না হয় এবং সার্ভারে জেসন ভাষায় অনুবাদ করা এবং ক্লায়েন্টে ফিরে যেমন জটিল এইচটিএমএল অনুবাদ করা প্রয়োজন।

সুতরাং না - আইফ্রেমটি মন্দ নয়।


5

এগুলি খারাপ নয়, তবে আসলে সহায়ক। কিছুক্ষণ আগে আমার একটি বিশাল সমস্যা হয়েছিল যেখানে আমাকে আমার টুইটার ফিড এম্বেড করতে হয়েছিল এবং এটি এমডিকে একই পৃষ্ঠায় করতে দেয় না, তাই আমি এটি একটি অন্য পৃষ্ঠাতে রেখেছি এবং এটি একটি আইফ্রেমে হিসাবে রেখেছি।

এগুলিও ভাল কারণ সমস্ত ব্রাউজারগুলি (এবং ফোন ব্রাউজারগুলি) তাদের সমর্থন করে। যতক্ষণ আপনি এগুলি সঠিকভাবে ব্যবহার করেন সেগুলিকে একটি খারাপ অনুশীলন হিসাবে বিবেচনা করা যাবে না।


4

এটি লক্ষণীয় যে আপনার ব্যবহারকারীদের ইন্টারনেট সংযোগের গতি বা আইফ্রেমের বিষয়বস্তু নির্বিশেষে যদি আইফ্রেমগুলি আপনার পৃষ্ঠা ডাউনলোডের গতিতে একটি ছোট (0.3 বা তার বেশি) তবে লক্ষণীয় মন্দার কারণ হয়ে উঠবে। এটি স্থানীয়ভাবে পরীক্ষার সময় আপনি দেখতে পাবেন না। আসলে, এটি কোনও পৃষ্ঠায় যুক্ত যে কোনও উপাদানগুলির জন্য সত্য, তবে আইফ্রেমগুলি আরও খারাপ বলে মনে হচ্ছে।


1
কেন? এবং মুখ্য পৃষ্ঠাটি লোড হয়ে যাওয়ার পরে কি তাদের আইফ্রেমগুলি লোড করার উপায়?
নিকোলাস লিওনার্ড

3
আমার মনে নেই কেন এগুলি এত ধীর; আমি এক বছর আগে এটি গবেষণা ছিল। সম্ভবত কারণ ব্রাউজারটি মূলত প্রতিটি ইফ্রেমের জন্য সম্পূর্ণ নতুন রেন্ডারিং প্রসঙ্গ তৈরি করে। পৃষ্ঠা লোড শেষ না হওয়া পর্যন্ত এগুলি লোড না করা হিসাবে, আপনি একটি ফাঁকা ইফ্রেম ব্যবহার করতে পারেন এবং পৃষ্ঠার লোড সম্পূর্ণ হওয়ার পরে iframe এর src ট্যাগটি সেট করতে পারেন। তবে নোট করুন, এমনকি কোনও ফাঁকা ইফ্রামেও আপনার পৃষ্ঠাগুলি রেন্ডারিংকে ধীরে ধীরে নামিয়ে দেবে, যদিও ডাউনলোডটি নয়, তাই জিনিসগুলি এখনও আপনার ব্যবহারকারীদের কাছে কিছুটা ধীর গতিতে দেখাবে।
ব্রায়ান

3
বিপরীতে, গতি এবং আইফ্রেমে উল্লেখ করার সময় কেউ সিডিএন (বিষয়বস্তু বিতরণ নেটওয়ার্কগুলি) নিয়ে আলোচনা করতে পারে। বিবেচনা করুন যে আইফ্রেম সমান্তরালভাবে সংস্থানগুলি ডাউনলোড করতে পারে এবং তাই গতিতে উত্সাহ সরবরাহ করতে পারে (ব্রাউজারের উপর নির্ভর করে)। এখানে অন্তত অন্য একটি রেফারেন্স যা আমার অবস্থানের সাথে সম্মত। developer.yahoo.com/performance/rules.html
স্ট্রাইক্সি

2
@ স্ট্রাক্সি: আপনি যে ইউআরএলটি নির্দিষ্ট করেছেন তা হ'ল আইফ্রেমগুলি ব্যয়বহুল, এমনকি ফাঁকা হলেও। এটি আইফ্রেমগুলির ব্যবহার হ্রাস করার প্রস্তাব দেয়। আপনার সাইটের গতি বাড়ানোর জন্য সিডিএন ব্যবহার করা আইফ্রেমগুলি ব্যবহার করার ক্ষেত্রে অরথোগোনাল। একটি সিডিএন আইফ্রেম ব্যবহারের ব্যয় হ্রাস করতে সহায়তা করতে পারে। তবে আইএফ্রেম সহ সিডিএন সিডিএন এবং আইফ্রেমের চেয়ে ভাল।
ব্রায়ান

1
@ স্ট্রাক্সি: আপনি যদি সমান্তরালভাবে সংস্থানগুলি ডাউনলোড করতে চান তবে এটি করার আরও ভাল উপায় আছে। পুরানো উত্তাপতা জাভাস্ক্রিপ্টের মাধ্যমে সমস্ত জিনিস লোড করা হয়। নতুন হট হ'ল সার্ভিস কর্মী ব্যবহার করা, যা আপনাকে ক্লায়েন্ট-সাইড লজিক ব্যবহার করে কীভাবে ব্যবহারকারী এজেন্ট লোড, প্রিললোড এবং ক্যাশে সাইটের সংস্থানগুলি সরাসরি পরিচালনা করতে সহায়তা করে। অন্য নতুন হটনেসটি হল http / 2 পুশ, যা আপনাকে ব্রাউজারের জন্য জিজ্ঞাসা না করে অপেক্ষা করেই ব্রাউজারে সংস্থান পাঠাতে দেয়। যাইহোক, অন্যান্য ব্রাউজারের ক্যাশে পরে http / 2 ক্যাশে পরীক্ষা করা হয় , তাই এই উদ্দেশ্যে প্রায়শই এটি একটি দুর্বল পছন্দ।
ব্রায়ান

3

আমি দেখেছি আইএফআরএমগুলি ডায়নামিক প্রসঙ্গ মেনু করার সহজ উপায় হিসাবে খুব সফলভাবে প্রয়োগ হয়েছিল, কিন্তু সেই ওয়েব-অ্যাপের লক্ষ্য শ্রোতারা কেবল ইন্টারনেট এক্সপ্লোরার ব্যবহারকারী ছিল।

আমি বলব যে এটি আপনার প্রয়োজনীয়তার উপর নির্ভর করে। আপনি যদি নিশ্চিত করতে চান যে আপনার পৃষ্ঠাটি প্রতিটি ব্রাউজারে সমানভাবে ভাল কাজ করে, তবে আইফ্রেমেস এড়িয়ে চলুন। আপনি যদি সংকীর্ণ এবং সুপরিচিত শ্রোতাদের লক্ষ্য করছেন (উদাহরণস্বরূপ স্থানীয় ইন্টারানেটে) এবং আপনি যদি আইএফআরএম ব্যবহার করে কোনও সুবিধা দেখেন তবে আমি বলব এটি করা ঠিক আছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.