2009-08-19 89 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> 

此代碼運行完美,但是當置於facebox(這只是創建一個iframe並顯示它像一個浮動窗口),代碼無法更新輸入的內容。

父母也有jQuery,但不應該影響我猜測的任何東西。

任何想法爲什麼它失敗?

+0

你是否試過讓實際的DOMElement而不是使用jQuery的方法來做到這一點? – geowa4 2009-08-19 17:31:21

回答

1

無法在Firefox 3,IE 7或Chrome 2上覆制。無論代碼是否在iframe中,該代碼都可以正常工作(使用newValue)。

您是否測試了縮減樣本的實現,而不是原始樣本?因爲我懷疑我們有一個問題,你認爲它們是相同的,而不是。

當然,好消息是,如果您發佈的示例實現有效,那麼您所要做的就是添加實際實現中的元素,直到出現問題。

+0

實際上,在我的實現中,它是從同一個域加載的,粘貼的版本只是爲了能夠共享它,因爲我的實現要大得多:) – Prody 2009-08-19 17:01:10

-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 2009-08-19 17:02:08

+0

好的,我正在進行的是訪問數據的替代方案。那麼這在你的能力適應。有一件事是沒用的,其他的東西是錯誤的。 – 2009-08-19 17:40:38

+0

如果項目位於iframe中,則只能使用iframe對象進行訪問。我們必須看看在當前文檔的iframe中是否有相同的id,¿ – 2009-08-19 17:44:00