এইচটিএমএল কোডটি ইউআরএল না হয়ে আইএফআরএম উত্স হিসাবে


122

আইএফআরএম-এর জন্য এই স্ট্যান্ডার্ড কোডটি কি কেবল এইচটিএমএল কোডের সাথে src URL টি প্রতিস্থাপনের কোনও উপায় আছে? সুতরাং আমার সমস্যাটি সহজ, আমার একটি পৃষ্ঠা রয়েছে এটি এমওয়াইএসকিউএল থেকে একটি এইচটিএমএল বডি লোড করে আমি সেই কোডটি একটি ফ্রেমে উপস্থাপন করতে চাই যাতে এটি পৃষ্ঠাটির বাকী অংশের চেয়ে স্বতন্ত্র রেন্ডার করে এবং সেই নির্দিষ্ট সীমান্তের সীমানায়।

<iframe src="http://example.com" name="test" height="120" width="600">You need a Frames Capable browser to view this content.</iframe>   

উত্তর:


148

আপনি একটি ডেটা ইউআরএল দিয়ে এটি করতে পারেন। এটি HTML এর একক স্ট্রিংয়ে পুরো দস্তাবেজকে অন্তর্ভুক্ত করে। উদাহরণস্বরূপ, নিম্নলিখিত এইচটিএমএল:

<html><body>foo</body></html>

এটি হিসাবে এনকোড করা যেতে পারে:

data:text/html;charset=utf-8,%3Chtml%3E%3Cbody%3Efoo%3C/body%3E%3C/html%3E

এবং তারপরে srciframe এর বৈশিষ্ট্য হিসাবে সেট করুন । উদাহরণ


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

var iframe = document.getElementById('foo'),
    iframedoc = iframe.contentDocument || iframe.contentWindow.document;

iframedoc.body.innerHTML = 'Hello world';

উদাহরণ


সম্পাদনা 2 (ডিসেম্বর 2017) : এইচটিএমএল 5 এর সিআরসিডোক অ্যাট্রিবিউটটি ব্যবহার করুন ঠিক ঠিক সৌরভ চন্দ্র প্যাটেলের জবাবের মতো, এখন কে গ্রহণযোগ্য উত্তর হওয়া উচিত! আপনি যদি আই / এজ দক্ষতার সাথে সনাক্ত করতে পারেন তবে একটি টিপ হল কেবলমাত্র তাদের জন্য সিআরসিডোক-পলফিল লাইব্রেরি এবং সমস্ত নন-আইই / এজ ব্রাউজারগুলিতে "খাঁটি" এসসিআরডিডোক বৈশিষ্ট্যটি ( নিশ্চিত করতে caniuse.com পরীক্ষা করুন ) ব্যবহার করুন।

<iframe srcdoc="<html><body>Hello, <b>world</b>.</body></html>"></iframe>

5
ইন্টারনেট এক্সপ্লোরার সমর্থন? ডেটা ইউআরআই
IE8- তে

1
এখানে ক্রস অরিজিনের শিরোনাম দেওয়ার কোনও উপায় আছে কি? ক্রোম অভিযোগ করতে থাকে Blocked a frame with origin "http://localhost" from accessing a cross-origin frame
jozxyqk

1
@ অ্যান্ড্রুসওয়ান আমি একক উক্তি নিয়ে সমস্যাটি বেশ বুঝতে পারি না। তুমি কি আমাকে একটা উদাহরণ দিতে পারবে?
সেপ্টগ্রাম

5
আমার মতো যে কেউ এইচটিএমএলকে এইচপিএল দিয়ে কীভাবে এনকোড করতে দেখছিলেন, আপনি কাঁচাল্লেঙ্কোড ( php.net/manual/en/function.rawurlencode.php ) চান
ব্রাইবা

4
মনে রাখবেন যে আপনি innerHTMLব্রাউজার ব্যবহার করলে বংশধর স্ক্রিপ্ট ট্যাগগুলি কার্যকর করা হবে না। আরও তথ্যের জন্য এলিমেন্ট.ইনার এইচটিএমএল এমডিএন পৃষ্ঠার সুরক্ষা বিবেচনা বিভাগটি দেখুন
লিওনিড ভাসিলেভ

91

ব্যবহার html5এর নতুন অ্যাট্রিবিউট srcdoc(srcdoc-polyfill) দস্তাবেজ

<iframe srcdoc="<html><body>Hello, <b>world</b>.</body></html>"></iframe>

ব্রাউজার সমর্থন - নিম্নলিখিত ব্রাউজারগুলিতে পরীক্ষিত:

Microsoft Internet Explorer
6, 7, 8, 9, 10, 11
Microsoft Edge
13, 14
Safari
4, 5.0, 5.1 ,6, 6.2, 7.1, 8, 9.1, 10
Google Chrome
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24.0.1312.5 (beta), 25.0.1364.5 (dev), 55
Opera
11.1, 11.5, 11.6, 12.10, 12.11 (beta) , 42
Mozilla FireFox
3.0, 3.6, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (beta), 50

1
ধন্যবাদ! একটি আধুনিক ওয়েবকিট ওয়েবভিউয়ের জন্য আমার একটি সমাধানের প্রয়োজন ছিল এবং এটি এটি করার সহজতম উপায় ছিল!
এন্টোইন বলভি

1
এটা তোলে ইন্টারনেট সমর্থিত নয়
শহরবাসী

1
CanIUse.com বলেছে যে সমর্থনটি বেশ দুর্বল: caniuse.com/#search=srcdoc
msquitieri

5
@ এসকেইটিরি না, এটি পলিফিলের নয়, দেশীয় সমর্থন দুর্বল বলে ।
ওয়াল্ফ

1
তবে আপনি উদ্ধৃতি চিহ্নগুলি ব্যবহার শুরু করার সাথে সাথেই এই বিরতিগুলি
আগিল

21

ডাব্লু 3 স্কুল অনুসারে, এইচটিএমএল 5 আপনাকে একটি নতুন "srcdoc" বৈশিষ্ট্য ব্যবহার করে এটি করতে দেয় তবে ব্রাউজার সমর্থনটি খুব সীমাবদ্ধ বলে মনে হয়।



2
@ উউইকিম পলিফিল পরামর্শ দেওয়ার জন্য ধন্যবাদ Thanks এটি লাইটওয়েট এবং দুর্দান্ত কাজ করে।
মাফিন ম্যান

1
ক্যানিউজ ডট কম অনুসারে কেবল কুখ্যাত মাইক্রোসফ্টের আইই এবং এজ ব্রাউজারগুলি (অপেরা মিনি ছাড়াও) এসসিআরডিডক বৈশিষ্ট্যটিকে সমর্থন করে না , সুতরাং এটি "খুব সীমাবদ্ধ" নয়। মাইক্রোসফ্ট ব্যবহারকারীদের জন্য কেবলমাত্র srcdoc-polyfill ব্যবহার করুন।
হিটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.