2009-08-19 13 views
2

ich zu aktualisieren haben folgende html:jQuery - Script-Tag in einem Iframe nicht die iframe Inhalt

<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> 

Dieser Code läuft perfekt, aber wenn sie in einem Facebox platziert (die gerade einen iframe erstellt und zeigt es wie ein schwebendes Fenster), aktualisiert der Code den Inhalt der Eingabe nicht.

Die Eltern haben auch jQuery, aber das sollte nichts beeinflussen, denke ich.

Irgendwelche Ideen, warum es versagt hat?

+0

Haben Sie versucht, das tatsächliche DOMElement zu erhalten, anstatt jQuerys Methoden zu verwenden? – geowa4

Antwort

1

Kann nicht auf Firefox 3, IE 7 oder Chrome 2 repliziert werden. Der Code funktioniert einwandfrei (unter Verwendung von newValue überall passend) unabhängig davon, ob es in einem Iframe ist.

Haben Sie Ihre reduzierte Beispielimplementierung im Gegensatz zu Ihrem Original getestet? Weil ich vermute, dass wir ein Problem haben, wo Sie denken, dass sie gleichwertig sind und sie nicht sind.

Natürlich ist die gute Nachricht, dass, wenn Ihre Posted-Sample-Implementierung funktioniert, dann alles, was Sie tun müssen, Elemente aus Ihrer tatsächlichen Implementierung hinzufügen, bis etwas kaputt geht.

+0

Eigentlich ist in meiner Implementierung es aus der gleichen Domäne geladen wird, ist die eingefügte Version nur in der Lage zu sein, es zu teilen, wie meine Implementierung viel größer :) ist – 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

wenn Sie meine Beschreibung sorgfältig gelesen habe, hätte man herausgefunden, dass mein Skript findet das Element #msg erfolgreich, kann seinen Wert lesen, aber nicht setzen. – Prody

+0

ok, was ich mache ist eine Alternative zum Zugriff auf die Daten. Dann passen Sie diese in Ihrer Fähigkeit an. Eine Sache ist nicht nützlich und etwas anderes ist ein Fehler. –

+0

Wenn sich das Element in einem Iframe befindet, können Sie nur über das iframe-Objekt darauf zugreifen. wir müssen sehen, ob Sie die gleiche ID im iframe im aktuellen Dokument haben, ok? –