J'ai une page qui se charge avec initialement juste une forme dans un iframe, quelque chose comme ceci: p>
Lorsque vous cliquez sur un bouton dans le formulaire, certains javascript sont invoqués qui crée une URL, puis je souhaite faire ce qui suit: p>
Ceci fonctionne dans IE pour "recharger" le cadre avec le nouveau contenu.
Cependant, dans Safari, cela ne fonctionne pas. P>
J'ai disponible JQuery, mais je ne veux pas remplacer l'iframe existant car il y a des événements attachés à celui-ci. Je ne peux pas non plus modifier l'ID de l'iframe car il est référencé tout au long de l'application. P>
J'ai vu des problèmes similaires mais pas de solutions qui semblent bien fonctionner pour mon problème exact. P>
Toute aide Tout le monde peut fournir serait génial! P>
iframe> code> p>
cadre.src = 'Quelphingpage? alternatif = 1'; code> p>
6 Réponses :
Essayez ceci
Il ne faut pas être nécessaire d'utiliser "Setattribute ()" pour mettre à jour la propriété "SRC" d'un élément de cadre et, en fait, cela peut ne pas fonctionner dans certains navigateurs.
Il existe plusieurs façons de modifier un attribut - setattribute en est l'une de celles-ci. Mon idée derrière le poteau est que Safari ne supporte peut-être pas la notation cadre.src = 'Nouvelle Uri ici';
J'avais essayé cela et ça n'a pas marché ... J'ai vu quelque chose à propos de Safari Caching iframe. L'attribut SRC est réellement mis à jour, mais la demande envoyée (j'utilise Fiddler pour surveiller) n'est pas l'URL SRC mise à jour, plutôt tout ce qui a été chargé pour la première fois dans le cadre.
Vous pouvez tester le cache en essayant de faire: form.src = 'Somepage? Listid = 1 et aléatoire = 552435' Le navigateur doit mettre en cache par URL, essayez de modifier l'URL pour voir si elle fonctionne si elle fonctionne
Donc, le cadre.src devrait simplement recharger le cadre cible. Il y a 3 autres cadres qui ne doivent pas être rechargés.
Je suis upvotant cela pour le commentaire sur le test du cache - j'ai pu prouver que le navigateur met en cache l'URL utilisant cette technique
Certains navigateurs n'utilisent pas "src" lorsque vous appelez l'objet JavaScript directement à partir de la hiérarchie JavaScript et d'autres utilisent "Emplacement" ou "Href" au lieu de "SRC" pour changer l'URL. Vous devez essayer ces deux méthodes pour mettre à jour votre iframe avec une nouvelle URL.
Pour empêcher le cache de navigateur Ajoutez une chaîne pseudo-aléatoire comme un nombre et un horodatage à l'URL pour empêcher la mise en cache. Par exemple, ajoutez "nouvelle date () > Xxx pré>
Je recommande la première option à l'aide de document.getelementByID P>
Vous pouvez également forcer l'iframe à recharger une page en utilisant P>
document.getElementById(iframeId).reload(true);
J'ai essayé les deux et l'attribut SRC est mis à jour, mais lorsque la trame charge, il reste le contenu d'origine.
Je vote cela en haut de l'un pour le tel qu'il a aidé dans un seul aspect
Eh bien, j'ai pu trouver ce qui semble être une solution réalisable - c'est un travail en cours, mais c'est fondamentalement ce que j'ai fini par faire:
J'ai trouvé une meilleure solution (bien que non particulièrement éloquente) pour cela à l'aide de jQuery.ajax: Cela force la DOM à lire dans l'objet Frame et la recharge une fois le serveur est prêt à répondre. p> p>
La réponse est donc très simple: et c'est tout.
Bien sûr, il y a un moyen plus élégant de créer des dom avec jQuery, mais cela donne l'idée d'iframe "rafraîchissant".
Travaille dans FF18, CH24, IE9, O12 (Eh bien c'est JQuery, il fonctionnera presque toujours :) p> p>
1. Mettez un
2. Lors de la recharge nécessaire, utilisez la suite de JQuery:
J'ai couru dans ce numéro à l'aide de réagir, passant la touche code> code> comme apps.src code> résolu
Les URL du cadre sont-elles dans le même domaine que votre page extérieure (principale)?
oui les URL du cadre sont dans le même domaine que la page principale