changer la source iframe en utilisant ie javascript
J'ai utilisé un iframe qui ressemble à ceci:
<iframe style='width: 330px; height: 278px' scrolling='no' name="iframeId" class="advPlayer" id="iframeId" frameborder="0" src='../../player/iabpreview.php?adid=<?php echo $selectedAdIdx ?>&autoPlay=true'></iframe>
Chaque fois que je clique sur un <div>
je dois changer la source de l'iframe. Je suis en utilisant le code suivant:
if ($j.browser.msie) {
frames['iframeId'].window.location="../player/iabpreview.php?adid="+adId+"&autoPlay=true";
}else {
$j(".advPlayer").eq(0).attr("src", "../player/iabpreview.php?adid="+adId+"&autoPlay=true");
}
Cela fonctionne avec Firefox mais pas avec Internet Explorer.
Ce code va fonctionner pour Internet Explorer?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez jamais 'utilisateur, la détection du navigateur", mais la détection de fonctionnalité. Le plus sûr moyen à mon humble avis, est-ce:
Il suffit de tester si la propriété src est disponible. Si pas de test sur le contenu de la fenêtre, et la dernière tentative est setAttribute.
J'ai essayé
getElementById
et beaucoup d'autres variantes. Aucun n'a fonctionné de la même manière sur IE, FF, Opera ou Chrome.Celui-ci fonctionne bien:
parent.frames.IFRAME_ID.location.href = '/';
Les images de la collection renvoie objets de fenêtre (ou l'équivalent). Vous souhaitez cibler l'objet de document; essayez de faire:
fenêtre.les frames['iframeId'].document.emplacement.href = ....
Cela fonctionne sous IE, FF, Safari, et ainsi de suite, donc pas besoin pour le désordre de détection du navigateur.
nb. IIRC les cadres de références à la collection nom dans IE, id dans d'autres navigateurs, de sorte que vous devez à la fois le nom et l'attribut id de l' - mais vous l'avez déjà, donc pas de soucis!
Depuis que vous avez utilisé jquery balise cela peut être pratique.
Dans le cas que vous faites de la croix-navigateur redimensionnement d'avoir un coup d'oeil à ce post qui explique comment redimensionner automatiquement la hauteur en fonction de la iframes contenu. Vous devez avoir accès au code html de la iframed site web.
Le redimensionnement d'une iframe basée sur le contenu
Il a des fuites de mémoire. Après l'iframe src a changé de nombreuses fois, votre navigateur ralentit à un rampement.
a des fuites de mémoire. L'effet est plus renoncé dans IE navigateurs.
document.getElementById('MsgBoxWindow').getAttribute('src')
fonctionne dans Internet Explorer, Firefox, Safari, pour obtenir l'URL de la source.document.getElementById('MsgBoxWindow').setAttribute('src', urlwithinthedomain)
fonctionne sur le même navigateurs pour définir l'URL de la source.Cependant, l'iframe doit être chargé avant d'appeler. Ne le placez pas avant de l'iframe, tout en appelant le code JavaScript. Vous pouvez placer après l'iframe, si vous appelez juste après le chargement de la page, et il fonctionne comme prévu.
Je obtenir ce à partir de quelque part d'autre :
Vous pouvez modifier la src de l'iframe à l'aide de deux méthodes:
Les deux méthodes exigent que l'iFrame être complètement chargées avant de procéder à la modification.
Changer le href fonctionne dans tous les navigateurs, y compris IE5.
Vous pouvez vous adresser à l'image
En vous reportant à la contentwindow de l'élément:
var myFrame = document.getElementById ("myFrame');
myFrames.contentWindow.location = 'http://example.com';
En précisant le NOM de l'élément:
var myFrame = fenêtre.les cadres.myFrame; //où myFrame est le NOM de l'élément
myFrame.location = 'http://example.com';
La modification de la src est comme dit ci-dessus, en sélectionnant l'élément et la modification de la src - mais il doit être un enfant, pas un descendant de l'élément.
Suffit d'utiliser le code suivant.
Il devrait fonctionner avec tous les navigateurs.
Notez que si vous ne modifiez que le #ancre de l'URL (c'est à dire en changeant de page.php#cette page.php#) alors IE de ne pas actualiser la page mais Chrome et Firefox. Si c'est votre problème, alors vous voudrez peut-être ajouter quelque chose au hasard de votre chaîne de requête pour faire IE pense que c'est une toute nouvelle page et de la force de la recharger.
Par exemple (à l'aide de jQuery):