আমার একটি আইফ্রেম এবং একটি বোতাম সহ একটি ওয়েবপৃষ্ঠা রয়েছে, একবার বোতামটি টিপলে আমার আইফ্রেমটি সতেজ হওয়া দরকার need এটা কি সম্ভব, যদি হয় কিভাবে? আমি অনুসন্ধান করেছি এবং কোনও উত্তর খুঁজে পাইনি।
আমার একটি আইফ্রেম এবং একটি বোতাম সহ একটি ওয়েবপৃষ্ঠা রয়েছে, একবার বোতামটি টিপলে আমার আইফ্রেমটি সতেজ হওয়া দরকার need এটা কি সম্ভব, যদি হয় কিভাবে? আমি অনুসন্ধান করেছি এবং কোনও উত্তর খুঁজে পাইনি।
উত্তর:
var iframe = document.getElementById('youriframe');
iframe.src = iframe.src;
Version 24.0.1312.56 Ubuntu 12.04 (24.0.1312.56-0ubuntu0.12.04.1)
var tmp_src = iframe.src; iframe.src = ''; iframe.src = tmp_src;
document.getElementById('frame_id').contentDocument.location.reload(true);
এটির সাহায্য করা উচিত:
document.getElementById('FrameID').contentWindow.location.reload(true);
সম্পাদনা: @ জোড়োর মন্তব্য অনুসারে অবজেক্টের নাম স্থির করা হয়েছে।
reload(true)
document.getElementById('FrameID').contentWindow.location.replace(new_url);
যদি ইফ্রেমে একই ডোমেন থেকে লোড করা থাকে তবে আপনি এটি করতে পারেন যা কিছুটা আরও অর্থবোধ করে:
iframe.contentWindow.location.reload();
আইই, মোজিলা, ক্রোমের জন্য কাজ করে
document.getElementById('YOUR IFRAME').contentDocument.location.reload(true);
আপনি এই সহজ পদ্ধতিটি ব্যবহার করতে পারেন
function reloadFrame(iFrame) {
iFrame.parentNode.replaceChild(iFrame.cloneNode(), iFrame);
}
এখান থেকে পেয়েছি
var f = document.getElementById('iframe1');
f.src = f.src;
সরাসরি 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;
}
আপনি যদি হ্যাশ পাথগুলি ব্যবহার করেন (যেমন মাইওয়েবসাইট.com/#/my/url) যা হ্যাচ স্যুইচিংয়ের ফ্রেমগুলি রিফ্রেশ করতে পারে না:
<script>
window.onhashchange = function () {
window.setTimeout(function () {
let frame = document.getElementById('myFrame');
if (frame !== null) {frame.replaceWith(frame);}
}, 1000);
}
</script>
দুর্ভাগ্যক্রমে, আপনি যদি সময়সীমা ব্যবহার না করেন তবে পৃষ্ঠাটি সামগ্রী লোড করা শেষ করার আগে জেএস ফ্রেমটি প্রতিস্থাপনের চেষ্টা করতে পারে (এইভাবে পুরানো সামগ্রীটি লোড করা)। আমি এখনও কাজের বিষয়ে নিশ্চিত নই।
আপনার যদি পৃষ্ঠার ভিতরে একাধিক আইফ্রেম থাকে তবে এই স্ক্রিপ্টটি কার্যকর হতে পারে। আমি ধারণা করছি যে আইফ্রেমে উত্সে একটি নির্দিষ্ট মান রয়েছে যা নির্দিষ্ট আইফ্রেমটি সন্ধান করতে ব্যবহার করা যেতে পারে।
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;
"/ আপনার উত্স" আপনার প্রয়োজনীয় মান সহ প্রতিস্থাপন করুন।
যদি আপনার আইফ্রেমের 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);
আপনি এটি ব্যবহার করতে পারেন:
js:
function refreshFrame(){
$('#myFrame').attr('src', "http://blablab.com?v=");
}
এইচটিএমএল:
`<iframe id="myFrame" src=""></iframe>`
জেএস ফিডল: https://jsfiddle.net/wpb20vzx/