কীভাবে 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.