Recharger une iframe avec jQuery
J'ai deux images sur une page et on fait des modifications à l'autre, mais l'autre iframe ne montre pas la modifier jusqu'à ce que je actualisation. Est-il un moyen facile pour actualiser cette iframe avec jQuery?
<div class="project">
<iframe id="currentElement" class="myframe" name="myframe" src="http://somesite.com/something/new"></iframe>
</div>
- Est l'iframe document sur un autre domaine?
- Vous avez accès au code du site qui s'affiche dans l'iFrame?
- Montrer plus de code, le code html pour les iFrames, et aussi le code javascript que vous utilisez pour faire les changements. Il est difficile de déterminer quel est le problème de voir seulement ce que vous avez inclus jusqu'à présent.
- J'ai accès au code oui et l'iframe est sur un autre domaine
- les frames ne sont pas autorisés à apporter des modifications au contenu des images sur d'autres domaines. Pour des exemples de la façon de travailler autour de ce cross-domain scripting restriction de voir ceci: softwareas.com/cross-domain-communication-with-iframes
- supposons qu'ils sont sur le même domaine...comment aurais-je de l'actualisation d'un iframe
Vous devez vous connecter pour publier un commentaire.
Si l'iframe n'était pas dans un domaine différent, vous pourriez faire quelque chose comme ceci:
Mais depuis l'iframe est sur un autre domaine, vous vous verrez refuser l'accès à l'iframe est
contentDocument
de la propriété par le de même la politique de l'origine.Mais vous pouvez hackishly de la force de la croix-domaine de l'iframe de recharger si votre code est en cours d'exécution sur l'iframe de la page parent, par la valeur de l'attribut src pour lui-même. Comme ceci:
Si vous essayez de recharger l'iframe à partir d'un autre iframe, vous êtes hors de la chance, que est pas possible.
document.getElementById(FrameID).contentWindow.location.reload(true);
iframe.contentDocument.location=iframe.src;
à la place qui a très bien fonctionné$('#map_iframe').attr('src', $('#map_iframe').attr('src'));
(function (elem) { elem.src = elem.src; }($('#iframe')[0]));
vous pouvez également utiliser jquery. C'est la même chose qu'Alex propose simplement à l'aide de JQuery:
De recharger un iframe avec jQuery
faire un lien à l'intérieur de l'iframe permet de dire avec id = "recharger", puis utilisez le code suivant
et vous êtes bon pour aller avec tous les navigateurs.
De recharger un iframe HTML (pas de Java Script req.)
Avoir plus de solution plus simple: qui fonctionne sans javaScript (FF, Webkit)
juste faire un point d'ancrage à l'intérieur de votre iframe
Lorsque vous cliquez sur cette ancre juste actualiser votre iframe
Mais
si vous avez paramètre à envoyer à votre iframe puis procédez comme suit.
n'a besoin d'aucune url de la page car -> target="_SELF" le faire pour vous
avec jquery, vous pouvez utiliser ceci:
Juste alternatif Alex réponse, mais avec jQuery
Je suis sûr que tous les exemples ci-dessus ne recharger l'iframe avec son original de la src, et non son actuel URL.
Qui devrait recharger à l'aide de l'url actuelle.
Ici est une autre façon
$( '#iframe' ).attr('src', $( '#iframe' ).attr('src'));
Si vous êtes à la croisée de domaine, il suffit de réglage de la src vers la même url ne seront pas toujours déclencher une recharger, même si l'emplacement de hachage changements.
Rencontré ce problème alors manuellement la construction bouton Twitter iframe, ce qui ne serait pas à jour au moment où j'ai mis à jour l'url.
Twitter comme les boutons sont de la forme:
.../tweet_button.html#&_version=2&count=none&etc=...
Depuis Twitter utilise le fragment de document pour l'url, la modification de la table de hachage/fragment n'ai pas recharger la source, et le bouton cibles n'ont pas tenu compte de ma nouvelle ajax le contenu chargé.
Vous pouvez ajouter un paramètre de chaîne de requête pour forcer le rechargement (par exemple:
"?_=" + Math.random()
mais que de déchets de bande passante, en particulier dans cet exemple où Twitter a spécifiquement essayer d'activer la mise en cache.Pour recharger quelque chose qui change seulement avec les balises de hachage, vous devez supprimer l'élément, ou de modifier le
src
, attendre le thread de sortie, puis l'affecter en retour. Si la page est encore dans le cache, cela ne devrait pas exiger un réseau de hit, mais ne déclencher le cadre de rechargement.Mise à jour: l'Utilisation de cette approche crée indésirables les éléments de l'historique. Au lieu de cela, supprimer et recréer l'élément iframe chaque fois, ce qui maintient cet arrière le bouton() fonctionne comme prévu. Aussi agréable de ne pas avoir la minuterie.
Juste alternatif Alex réponse, mais avec jQuery:
Ou vous pouvez utiliser de petits fonction:
J'espère que cela aide.
C'est possible avec JavaScript simple.
window.frames
syntaxe pour déclencher une fonction JavaScript dans iframe2. Juste assurez-vous d'utiliser leid
/name
de iframe2 et pas lesrc
.//actualiser tous les iframes à la page
cross-browser est la solution de:
ceci est utile en particulier lors de la <iframe> est la cible d'un <form>
RÉSOLU! - Je m'inscrire pour stockoverflow juste pour vous la seule solution (au moins dans ASP.NET/IE/FF/Chrome) qui fonctionne! L'idée est de remplacer innerHTML valeur d'un div par son actuel innerHTML valeur.
Voici l'extrait de code HTML:
Et mon code Javascript:
Espère que cette aide.
runat="server"
n'est pas applicable; 2. Pourquoi tous les chapeaux pourIFRAME
? 3. dimension des valeurs d'attribut ont pas d'unités; 4.frameborder
est obsolèteVous devez utiliser
de trouver la source de l'iframe et de son URL doit être sur le même domaine de la société mère.
vous pouvez le faire comme ceci
Ci-dessous la solution pour vous: