2010-01-14 5 views
87

J'ai une page Web avec un IFrame et un bouton, une fois que le bouton est pressé, j'ai besoin de l'IFrame à actualiser. Est-ce possible, si oui, comment? J'ai cherché et je n'ai trouvé aucune réponse.Comment rafraîchir un IFrame en utilisant Javascript?

+0

duplication possible de [Quelle est la meilleure façon de recharger un iframe en utilisant JavaScript?] (Http://stackoverflow.com/questions/86428/whats-the-best-way-to-reload-an-iframe-using- javascript) – j0k

Répondre

99
var iframe = document.getElementById('youriframe'); 
iframe.src = iframe.src; 
+5

Ne fonctionne pas dans Chrome. Au moins pas dans Chrome 19 ... – Tarlog

+2

Cela fonctionne pour moi dans cette version de Chrome: 'Version 24.0.1312.56 Ubuntu 12.04 (24.0.1312.56-0ubuntu0.12.04.1)' –

+2

FYI - Il est actuellement (à partir de Janvier 2013) un bogue de projet Chromium (https://code.google.com/p/chromium/issues/detail?id=172859) qui entraîne l'ajout de mises à jour iframe à l'historique du document. –

91

Cela devrait aider:

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

EDIT: Correction du nom de l'objet comme par @ commentaire de Joro.

+3

Cela ne fonctionne pas dans IE9. Vous devriez utiliser contentWindow à la place contentDocument. – gotqn

+1

Merci pour la réponse. En outre, si vous devez provoquer positivement un rafraîchissement à une autre page dans l'iframe, alors au lieu de 'reload (true)' vous utiliserez ceci: 'document.getElementById ('FrameID'). ContentWindow.location.replace (new_url); ' – racl101

+6

Cela ne fonctionne pas avec les iframes d'origines différentes (protocole, nom d'hôte ou port). – michelpm

2

obtenu ceci de here

var f = document.getElementById('iframe1'); 
f.src = f.src; 
+0

Si dans iFrame changer la page, cette méthode a perdu la navigation –

11

à condition que le iframe est chargé à partir du même domaine, vous pouvez faire cela, ce qui en fait un peu plus de sens:

iframe.contentWindow.location.reload();

1

Voici le HTML extrait:

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

Et mon Code JavaScript:

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

Si vous avez plusieurs iFrames dans la page, ce script peut être utile. Je suppose qu'il y a une valeur spécifique dans la source iFrame qui peut être utilisée pour trouver l'iFrame spécifique.

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; 

Remplacez "/ yourSource" par la valeur dont vous avez besoin.

6

Works pour IE, Mozzila, Chrome

document.getElementById('YOUR IFRAME').contentDocument.location.reload(true); 
+0

Merci !!! Cela fonctionne dans Chrome 60.0.3112.101 –

-1

Vous pouvez utiliser ceci:

Js:

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

Html:

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

JS Fiddle: https://jsfiddle.net/wpb20vzx/

+1

La question n'a rien à voir avec le populaire JavaScript _library_ appelé jQuery. –

+0

Que ferait Math.round()? Il semble totalement inutile ici. –

+0

Salut, j'ai utilisé Math.round() Parce que certains navigateurs peuvent mettre en cache Url - page afin que l'actualisation ne fonctionne pas. –

0

Si l'URL de votre iframe ne change pas, vous pouvez simplement la recréer. Si votre iframe n'a pas la même origine (schéma de protocole, nom d'hôte et port), vous ne pourrez pas connaître l'URL actuelle dans l'iframe, vous aurez donc besoin d'un script dans le document iframe pour échanger des messages avec sa fenêtre parent (la fenêtre de la page).

Dans le document iframe:

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

Dans votre page:

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

Vous pouvez utiliser cette méthode simple

function reloadFrame(iFrame) { 

    iFrame.parentNode.replaceChild(iFrame.cloneNode(), iFrame); 

} 
1

Réinitialisation de l'attribut src directement:

iframe.src = iframe.src; 

Remise à zéro du src avec un horodatage pour le cache busting:

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

Suppression de l'option src lorsque les chaînes de requête n'est pas possible (URI données):

var wasSrc = iframe.src 

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

2017:

Si dans le même domaine seulement:

iframe.contentWindow.location.reload(); 

fonctionnera.

Questions connexes