কীভাবে jQuery এর সাথে আইফ্রেমের সামগ্রী অ্যাক্সেস করবেন?


116

আমি কীভাবে jQuery এর সাথে আইফ্রেমের সামগ্রীটি অ্যাক্সেস করতে পারি? আমি এটি করার চেষ্টা করেছি, তবে এটি কার্যকর হবে না:

iframe সামগ্রী: <div id="myContent"></div>

JQuery: $("#myiframe").find("#myContent")

আমি কীভাবে অ্যাক্সেস করতে পারি myContent?


Jquery / জাভাস্ক্রিপ্ট এর অনুরূপ : একটি iframe এর বিষয়বস্তু অ্যাক্সেস করা কিন্তু গৃহীত উত্তরটি আমি যা খুঁজছিলাম তা নয়।


আমি সবেমাত্র পেয়েছি যে ফায়ারফক্স কনসোলে অন্তর্নির্মিত $ ভেরিয়েবল মোটেও jQuery এর মতো লাগে না। (আমি বুঝতে পারি যে আমার কাছে jQuery ভেরিয়েবলটি নেই, তারপরে আমি বুঝতে পেরেছি যে আমি jQuery এর উত্স কোডটি লোড করি নি)।
ইয়েল ghEEz

উত্তর:


214

আপনাকে এই contents()পদ্ধতিটি ব্যবহার করতে হবে :

$("#myiframe").contents().find("#myContent")

সূত্র: http://simple.procoding.net/2008/03/21/how-to-access-iframe-in-jquery/

এপিআই ডক: https://api.jquery.com/contents/


3
আমাকে ত্রুটি দিন: ত্রুটি: সম্পত্তি 'মালিকের ডকুমেন্ট' অ্যাক্সেসের অনুমতি অস্বীকার করেছে
ইমরান খান

26
আইমে: এটি সম্ভবত নিম্নলিখিত কারণগুলির কারণে আপনাকে ত্রুটি দিচ্ছে: 1) আইফ্রেম একই ডোমেনের নয়। 2) আপনি ইফ্রেমে লোড ইভেন্টের আগে এটি পড়ার চেষ্টা করছেন।
iMatoria

1
অ্যাক্সেস করার চেষ্টা করার আগে এবং ত্রুটি পাওয়ার আগে যদি ইফ্রেমে সামগ্রীটি একই ডোমেন থেকে আসে তা যাচাই করার কোনও উপায় আছে?
কামাফেদার

2
সোর্স ইউআরএলটি নষ্ট হয়ে গেছে।
karthzDIGI

1
@ জ্পেরেজমার্টিন: আপনাকে কিছু জাভাস্ক্রিপ্ট লাইব্রেরি ব্যবহার করতে হবে যা মূল পৃষ্ঠা এবং আইফ্রেমের মধ্যে তথ্য স্থানান্তর করবে। ক্রস ব্রাউজার কার্যকারিতার কারণে এটি মূলত ব্রাউজার দ্বারা অস্বীকার করা হয়েছিল। আমি দুঃখিত, আমি এ জাতীয় কোনও গ্রন্থাগার সম্পর্কে সচেতন নই কারণ আমার কখনই এটির প্রয়োজন ছিল না।
iMatoria

21
<html>
<head>
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<script type="text/javascript">

$(function() {

    //here you have the control over the body of the iframe document
    var iBody = $("#iView").contents().find("body");

    //here you have the control over any element (#myContent)
    var myContent = iBody.find("#myContent");

});

</script>
</head>
<body>
  <iframe src="mifile.html" id="iView" style="width:200px;height:70px;border:dotted 1px red" frameborder="0"></iframe>
</body>
</html>

15

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

<?php
    $contents = file_get_contents($external_url);
    $res = file_put_contents($filename, $contents);
?>

তারপরে, নতুন ফাইল সামগ্রী (স্ট্রিং) পান এবং এটি এইচটিএমএল-তে পার্স করুন, উদাহরণস্বরূপ (জকিউরিতে):

$.get(file_url, function(string){
    var html = $.parseHTML(string);
    var contents = $(html).contents();
},'html');
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.