জাভাস্ক্রিপ্ট ব্যবহার করে কীভাবে আইফ্রেম রিফ্রেশ করবেন?


121

আমার একটি আইফ্রেম এবং একটি বোতাম সহ একটি ওয়েবপৃষ্ঠা রয়েছে, একবার বোতামটি টিপলে আমার আইফ্রেমটি সতেজ হওয়া দরকার need এটা কি সম্ভব, যদি হয় কিভাবে? আমি অনুসন্ধান করেছি এবং কোনও উত্তর খুঁজে পাইনি।


উত্তর:


152
var iframe = document.getElementById('youriframe');
iframe.src = iframe.src;

2
এটি ক্রোমের এই সংস্করণে আমার জন্য কাজ করে:Version 24.0.1312.56 Ubuntu 12.04 (24.0.1312.56-0ubuntu0.12.04.1)
পল এ জংউথर्थ

3
এফওয়াইআই - বর্তমানে (জানুয়ারী ২০১৩ হিসাবে) একটি ক্রোমিয়াম প্রকল্প বাগ (কোড. google.com/p/chromium/issues/detail?id=172859 ) রয়েছে যা আইফ্রেমে আপডেটগুলি নথির ইতিহাসে যুক্ত করে।
রবার্ট আল্টম্যান

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

10
var tmp_src = iframe.src; iframe.src = ''; iframe.src = tmp_src;
লিফিং

2
এটি ক্রোমে আমার জন্য পুরোপুরি কাজ করেdocument.getElementById('frame_id').contentDocument.location.reload(true);
হাসিব জুলফিকার

104

এটির সাহায্য করা উচিত:

document.getElementById('FrameID').contentWindow.location.reload(true);

সম্পাদনা: @ জোড়োর মন্তব্য অনুসারে অবজেক্টের নাম স্থির করা হয়েছে।


3
এটি আই 9 তে কাজ করছে না। আপনার পরিবর্তে বিষয়বস্তু ডকুমেন্ট কনটেন্ট উইন্ডো ব্যবহার করা উচিত।

1
উত্তর করার জন্য ধন্যবাদ. অতিরিক্ত হিসাবে, যদি আপনাকে ইতিবাচকভাবে অন্য পৃষ্ঠায় reload(true)document.getElementById('FrameID').contentWindow.location.replace(new_url);
ইফ্রামের

15
এটি বিভিন্ন উত্স (প্রোটোকল, হোস্টনাম বা পোর্ট) সহ আইফ্রেমে কাজ করে না।
মাইকেল্পম

18

যদি ইফ্রেমে একই ডোমেন থেকে লোড করা থাকে তবে আপনি এটি করতে পারেন যা কিছুটা আরও অর্থবোধ করে:

iframe.contentWindow.location.reload();





1

এইচটিএমএল স্নিপেট এখানে:

<td><iframe name="idFrame" id="idFrame" src="chat.txt" width="468" height="300"></iframe></td>

এবং আমার জাভাস্ক্রিপ্ট কোড:

window.onload = function(){
setInterval(function(){
    parent.frames['idFrame'].location.href = "chat.txt";
},1000);}

1

সরাসরি src বৈশিষ্ট্য পুনরায় সেট করা:

iframe.src = iframe.src;

ক্যাশে বুস্টিংয়ের জন্য টাইম স্ট্যাম্পের সাথে এসআরসি পুনরায় সেট করা:

iframe.src =  iframe.src.split("?")[0] + "?_=" + new Date().getTime();

যখন ক্যোয়ারী স্ট্রিং বিকল্পটি সম্ভব না হয় তখন এসসিআর সাফ করা (ডেটা ইউআরআই):

var wasSrc = iframe.src

iframe.onload = function() {
    iframe.onload = undefined;
    iframe.src = wasSrc;
}

1

আপনি যদি হ্যাশ পাথগুলি ব্যবহার করেন (যেমন মাইওয়েবসাইট.com/#/my/url) যা হ্যাচ স্যুইচিংয়ের ফ্রেমগুলি রিফ্রেশ করতে পারে না:

<script>
    window.onhashchange = function () {
        window.setTimeout(function () {
            let frame = document.getElementById('myFrame');
            if (frame !== null) {frame.replaceWith(frame);}
        }, 1000);
    }
</script>

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


0

আপনার যদি পৃষ্ঠার ভিতরে একাধিক আইফ্রেম থাকে তবে এই স্ক্রিপ্টটি কার্যকর হতে পারে। আমি ধারণা করছি যে আইফ্রেমে উত্সে একটি নির্দিষ্ট মান রয়েছে যা নির্দিষ্ট আইফ্রেমটি সন্ধান করতে ব্যবহার করা যেতে পারে।

var iframes = document.getElementsByTagName('iframe');
var yourIframe = null
for(var i=0; i < iframes.length ;i++){
    var source =  iframes[i].attributes.src.nodeValue;
    if(source.indexOf('/yourSorce') > -1){
        yourIframe = iframes[i];
    }   
}
var iSource = yourIframe.attributes.src.nodeValue;
yourIframe.src = iSource;

"/ আপনার উত্স" আপনার প্রয়োজনীয় মান সহ প্রতিস্থাপন করুন।


0

যদি আপনার আইফ্রেমের URL পরিবর্তন না হয় তবে আপনি কেবল এটি পুনরায় তৈরি করতে পারেন can

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

Iframe নথিতে:

window.addEventListener('change', function(e) {
  if (e.data === 'Please reload yourself') {
    var skipCache = true; // true === Shift+F5
    window.location.reload(skipCache);
  }
}

আপনার পৃষ্ঠায়:

var iframe = document.getElementById('my-iframe');
var targetOrigin = iframe.src; // Use '*' if you don't care
iframe.postMessage('Please reload yourself', targetOrigin);

-2

আপনি এটি ব্যবহার করতে পারেন:

js:

function refreshFrame(){
    $('#myFrame').attr('src', "http://blablab.com?v=");
}

এইচটিএমএল:

`<iframe id="myFrame" src=""></iframe>`

জেএস ফিডল: https://jsfiddle.net/wpb20vzx/


1
JQuery নামক জনপ্রিয় জাভাস্ক্রিপ্ট লাইব্রেরির সাথে প্রশ্নটির কোনও যোগসূত্র নেই।
জন ওয়েইজ

ম্যাথ.াউন্ড () কী করবে? এটি এখানে সম্পূর্ণ অকেজো মনে হচ্ছে।
ডেভিড আর

হাই আমি ম্যাথ.আউন্ড () ব্যবহার করেছি কারণ কিছু ব্রাউজার ইউরাল - পৃষ্ঠা ক্যাশে করতে পারে তাই কাজ না করে রিফ্রেশ করুন।
ফেরহাট KOÇER
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.