2009-08-19 9 views
2

du iframe je le code HTML suivant:jQuery - balise script dans un iframe ne parvient pas à mettre à jour le contenu

<html> 
    <head></head> 
    <body> 
     <form> 
      <input id="msg" type="text" value="oldValue" /> 
     </form> 
     <script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script> 
     <script> 
      $().ready(function() { 
       var m = $("#msg"); 
       alert(m.val()); // returns oldValue 
       m.val("newValue"); // this doesn't make the browser show newValue instead of oldValue 
       alert(m.val()); // returns newValue 
       // and in the end, the browser still shows oldValue for the input 
      }); 
     </script> 
    </body> 
</html> 

Ce code fonctionne parfaitement, mais lorsqu'il est placé dans un facebox (qui crée juste un iframe et montre comme une fenêtre flottante), le code ne parvient pas à mettre à jour le contenu de l'entrée.

Le parent a également jQuery, mais cela ne devrait pas influencer tout ce que je suppose.

Des idées pour lesquelles ça marche?

+0

Avez-vous essayé d'obtenir le DOMElement réel au lieu d'utiliser les méthodes de jQuery pour le faire? – geowa4

Répondre

1

Impossible de répliquer sur Firefox 3, IE 7 ou Chrome 2. Le code fonctionne correctement (en utilisant newValue partout approprié), que ce soit dans un iframe.

Avez-vous testé la mise en œuvre de votre échantillon réduit, par opposition à votre original? Parce que je pense que nous avons un problème où vous pensez qu'ils sont équivalents et ils ne le sont pas. Bien sûr, la bonne nouvelle est que si votre exemple d'implémentation fonctionne, tout ce que vous avez à faire est d'ajouter des éléments de votre implémentation réelle jusqu'à ce que quelque chose se brise.

+0

en fait, dans ma mise en œuvre, il est chargé du même domaine, la version collée est juste pour pouvoir le partager car mon implémentation est beaucoup plus grande :) – Prody

-1
doc = xframe.contentWindow.document || xframe.document || xframe.contentDocument || xframe.contentWindow && xframe.contentWindow.document || null; 

if(!doc) 
{ 
    alert("Error"); 
    return false; 
} 

var m = $(doc).find("#msg"); 
+0

si vous auriez lu attentivement ma description, vous auriez découvert que mon script trouve avec succès l'élément #msg, peut lire sa valeur, mais ne peut pas le définir. – Prody

+0

ok, ce que je vais faire est une alternative pour accéder aux données. alors ceci dans votre capacité s'adapte. Une chose est ne pas être utile, et quelque chose d'autre qui est une erreur. –

+0

Si l'élément est dans un cadre iFrame, vous pouvez uniquement accéder à l'aide de l'objet iframe. nous devons voir si vous avez le même id dans l'iframe dans le document actuel, ok? –

Questions connexes