J'ai deux iframes sur une page et l'un apporte des modifications à l'autre, mais l'autre iframe ne montre pas le changement jusqu'à ce que je rafraîchisse. Existe-t-il un moyen simple d'actualiser cette iframe avec jQuery?
<div class="project">
<iframe id="currentElement" class="myframe" name="myframe" src="http://somesite.com/something/new"></iframe>
</div>
javascript
jquery
html
iframe
Matt Elhotiby
la source
la source
Réponses:
Si l'iframe n'était pas sur un domaine différent, vous pouvez faire quelque chose comme ceci:
Mais comme l'iframe se trouve sur un domaine différent, l'accès à la
contentDocument
propriété de l'iframe vous sera refusé par la stratégie de même origine .Mais vous pouvez forcer de manière piratée l'iframe interdomaine à se recharger si votre code s'exécute sur la page parent de l'iframe, en définissant son attribut src sur lui-même. Comme ça:
Si vous essayez de recharger l'iframe à partir d'une autre iframe, vous n'avez pas de chance, ce n'est pas possible.
la source
document.getElementById(FrameID).contentWindow.location.reload(true);
iframe.contentDocument.location=iframe.src;
place qui a très bien fonctionné$('#map_iframe').attr('src', $('#map_iframe').attr('src'));
la source
(function (elem) { elem.src = elem.src; }($('#iframe')[0]));
document.getElementById(FrameID).contentWindow.location.reload(true);
ne fonctionnent pas correctement. Cette réponse fonctionne mieux.vous pouvez également utiliser jquery. C'est la même chose qu'Alex a proposé en utilisant simplement JQuery:
la source
var f = $('#iframeX') ; f.attr( 'src', f.attr( 'src' ))
peut être plus robuste à maintenir et à lireRecharger un iframe avec jQuery
créer un lien dans l'iframe disons avec id = "reload" puis utiliser le code suivant
et vous êtes prêt à utiliser tous les navigateurs.
Recharger un iframe avec HTML (pas de demande Java Script)
Il a une solution plus simple: qui fonctionne sans javaScript dans (FF, Webkit)
juste faire une ancre à côté de votre iframe
Lorsque vous cliquez sur cette ancre, il suffit de rafraîchir votre iframe
Mais si vous avez un paramètre envoyé à votre iframe, procédez comme suit.
n'ont pas besoin d'url de page car -> target = "_ SELF" faites-le pour vous
la source
avec jquery, vous pouvez utiliser ceci:
la source
Juste en retour la réponse d'Alex mais avec jQuery
la source
Voici une autre façon
la source
$( '#iframe' ).attr('src', $( '#iframe' ).attr('src'));
Je suis presque sûr que tous les exemples ci-dessus ne rechargent que l'iframe avec son src d'origine, pas son URL actuelle.
Cela devrait recharger en utilisant l'url actuelle.
la source
Si vous êtes multi-domaines, le simple fait de redéfinir le src sur la même URL ne déclenchera pas toujours un rechargement, même si le hachage de l'emplacement change.
J'ai rencontré ce problème lors de la construction manuelle des iframes des boutons Twitter, qui ne s'actualiseraient pas lorsque je mettais à jour les URL.
Les boutons comme Twitter ont la forme:
.../tweet_button.html#&_version=2&count=none&etc=...
Puisque Twitter utilise le fragment de document pour l'URL, la modification du hachage / fragment n'a pas rechargé la source, et les cibles de bouton ne reflétaient pas mon nouveau contenu chargé en ajax.
Vous pouvez ajouter un paramètre de chaîne de requête pour forcer le rechargement (par exemple:
"?_=" + Math.random()
mais cela gaspillera de la bande passante, en particulier dans cet exemple où l'approche de Twitter essayait spécifiquement d'activer la mise en cache.Pour recharger quelque chose qui ne change qu'avec des balises de hachage, vous devez supprimer l'élément, ou changer le
src
, attendre que le thread se termine, puis le réattribuer. Si la page est toujours en cache, cela ne devrait pas nécessiter de hit réseau, mais déclenche le rechargement du cadre.Mise à jour : l'utilisation de cette approche crée des éléments d'historique indésirables. Au lieu de cela, supprimez et recréez l'élément iframe à chaque fois, ce qui permet à ce bouton back () de fonctionner comme prévu. Aussi bien de ne pas avoir la minuterie.
la source
Juste la réponse d'Alex, mais avec jQuery:
Ou vous pouvez utiliser une petite fonction:
J'espère que cela aide.
la source
la source
Ceci est possible avec un simple JavaScript.
window.frames
syntaxe pour déclencher une fonction JavaScript dans iframe2. Assurez-vous simplement d'utiliser leid
/name
de iframe2 et non lesrc
.la source
// actualise tous les iframes de la page
la source
La solution multi-navigateurs est:
ceci est particulièrement utile lorsque <iframe> est la cible d'un <form>
la source
RÉSOLU! Je m'inscris à stockoverflow juste pour vous partager la seule solution (au moins en ASP.NET/IE/FF/Chrome) qui fonctionne! L'idée est de remplacer la valeur innerHTML d'un div par sa valeur innerHTML actuelle.
Voici l'extrait de code HTML:
Et mon code Javascript:
J'espère que cela t'aides.
la source
runat="server"
n'est donc pas applicable; 2. Pourquoi tout en majusculesIFRAME
? 3. les valeurs d'attribut de dimension n'ont pas d'unité; 4.frameborder
est obsolèteVous devez utiliser
pour trouver la source de l'iframe et son URL doit être sur le même domaine du parent.
la source
tu peux le faire comme ça
la source
La solution ci-dessous fonctionnera à coup sûr:
la source