আইফ্রেমের মধ্যে থেকে উপাদান পান


উত্তর:


382
var iframe = document.getElementById('iframeId');
var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document;

আপনি আরও সহজভাবে লিখতে পারেন:

var iframe = document.getElementById('iframeId');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;

এবং প্রথম বৈধ অভ্যন্তরীণ ডক ফিরে আসবে।

একবার আপনি অভ্যন্তরীণ ডকটি পেয়ে গেলে, আপনি কেবল তার অভ্যন্তরগুলিকে একইভাবে অ্যাক্সেস করতে পারবেন ঠিক যেমন আপনি আপনার বর্তমান পৃষ্ঠায় কোনও উপাদান অ্যাক্সেস করতে পারবেন। ( innerDoc.getElementById... ইত্যাদি)

গুরুত্বপূর্ণ: নিশ্চিত করুন যে আইফ্রেমটি একই ডোমেনে রয়েছে, অন্যথায় আপনি এর অভ্যন্তরীণ প্রবেশাধিকার পেতে পারবেন না। এটি ক্রস-সাইট স্ক্রিপ্টিং হবে।


4
দুর্দান্ত উত্তর। আপনি কি জানেন যে আপনি এটি করতে পারেন: var অভ্যন্তরীণ ডক = iframe.contentDocament || iframe.contentWindow.document; // আরও পঠনযোগ্য এবং এর অর্থ একই
ডেভিড স্নাবেল-কাউন্ট

5
আমি মানুষকে টার্নারি অপারেটরগুলির চেয়ে বেশি বিভ্রান্ত দেখেছি। তারা জানে না যে প্রথম বৈধটি ফিরে এসেছে।
geowa4

5
প্রকৃতপক্ষে, আমি এটি অন্তর্ভুক্ত করার জন্য উত্তরটি সম্পাদনা করার সাথে সাথে আমার কাঁধে থাকা লোকটি আমাকে জিজ্ঞাসা করেছিল যে এটি কী করেছে ...
geowa4

12
সরলতার জন্য আরও জটিল কোড ব্যবহার করার চেয়ে সম্ভবত
পড়াশোনা করা ভাল

1
@ জেলিকেলকিট: এর চারপাশে যে কোনও উপায়ে "ক্রস-সাইট রিকোয়েস্ট ফরজি" করার উপায়, এটি "এক-ক্লিক" আক্রমণ বা "সেশন রাইডিং" নামেও পরিচিত
সিএস্পার্প

12

লোড হওয়ার পরে iframe অ্যাক্সেস করতে ভুলবেন না । JQuery ছাড়াই পুরানো তবে নির্ভরযোগ্য উপায়:

<iframe src="samedomain.com/page.htm" id="iframe" onload="access()"></iframe>

<script>
function access() {
   var iframe = document.getElementById("iframe");
   var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
   console.log(innerDoc.body);
}
</script>

3
window.parent.document.getElementById("framekit").contentWindow.CallYourFunction('pass your value')

CallYourFunction() এটি পৃষ্ঠার ভিতরে ফাংশন এবং এতে ফাংশন ক্রিয়া


5
এটি কোনও আইফ্রেম থেকে কোনও ফাংশন কল করছে, উপাদানটির কোনও রেফারেন্স পাচ্ছে না।
নিক মিচেল

3

উপরের উত্তরগুলি জাভস্ক্রিপ্ট ব্যবহার করে ভাল সমাধান দিয়েছে। এখানে একটি সহজ jQuery সমাধান:

$('#iframeId').contents().find('div')

এখানে কৌতুকটি jQuery এর .contents()পদ্ধতি, এর বিপরীতে .children()যা কেবলমাত্র HTML উপাদানগুলি .contents()পেতে পারে , পাঠ্য নোড এবং এইচটিএমএল উভয় উপাদানই পেতে পারে। এজন্য কেউ এটি ব্যবহার করে একটি আইফ্রেমের নথি সামগ্রী পেতে পারে।

JQuery সম্পর্কে আরও পড়ুন .contents():। বিষয়বস্তু ()

নোট করুন যে iframe এবং পৃষ্ঠা একই ডোমেনে থাকতে হবে।


1

অন্য কোনও উত্তরই আমার পক্ষে কাজ করছে না। আমি আমার আইফ্রেমের মধ্যে এমন একটি ফাংশন তৈরি করে শেষ করেছিলাম যা আমি খুঁজছিলাম সেই বস্তুটি ফিরিয়ে দেয়:

function getElementWithinIframe() {
    return document.getElementById('copy-sheet-form');
}

তারপরে আপনি উপাদানটি পুনরুদ্ধার করতে সেই ফাংশনটিকে এমনভাবে কল করুন:

var el = document.getElementById("iframeId").contentWindow.functionNameToCall();

0

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


-3

নীচে কোড আপনাকে iframe ডেটা খুঁজে পেতে সহায়তা করবে।

let iframe = document.getElementById('frameId');
let innerDoc = iframe.contentDocument || iframe.contentWindow.document;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.