2009-08-19 9 views
2

を更新するために失敗した私は、次のHTMLを持っている:jQueryの - のiframe内のスクリプトタグは、IFRAMEのコンテンツ

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

このコードは完璧に動作しますが、ただのiframeを作成し、同様にそれを示してfacebox(中に置かれたときフローティングウィンドウ)、コードは入力の内容を更新できません。

親もjQueryを持っていますが、それは私が推測するものには影響しません。

なぜ失敗するのか?

+0

jQueryのメソッドを使用する代わりに実際のDOMElementを取得しようとしましたか? – geowa4

答えて

1

Firefox 3、IE 7、またはChrome 2で複製できません。コードはiframeにあるかどうかに関係なく、問題なく使用できます(newValueどこでも適切です)。

元のサンプルではなく、サンプルの実装をテストしましたか?私は、あなたは彼らが同等だと思うところに問題があると思うので、それはそうではありません。

もちろん、あなたのポストされたサンプルの実装がうまくいくならば、何かが壊れるまであなたの実際の実装から要素を追加するだけでいいということです。

+0

実際には私の実装では同じドメインからロードされていますが、貼り付けられたバージョンは実装がもっと大きいので共有できます:) – 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

私の説明を慎重に読んでいればわかりますスクリプトは#msg要素を見つけ出し、値を読み取ることはできますが、設定することはできません。 – Prody

+0

私が行っていることは、データにアクセスするための代替手段です。これがあなたの能力に適応します。 1つのことは有用ではなく、それ以外は間違いです。 –

+0

アイテムがiframe内にある場合、iframeオブジェクトを使用してのみアクセスできます。現在のドキュメントのiframeに同じIDがあるかどうかを確認する必要があります。 –