2010-02-02 74 views
1

只是想知道是否有其他人遇到過這種情況,或知道我爲什麼會收到錯誤。我在iframe中使用javascript來調用父dom元素,然後使用jQuery UI的效果核心來動搖它。這裏有一個例子:jQuery對iframe父文檔的影響

$(document).ready(function(){ 
    if ($("form").length>0) 
    { 
     $("form").submit(function(){ 
      var oParentDoc = $(parent.document).find("div#element"); 
      var action = $(this).attr("action"); 
      var postdata = $(this).serialize(); 
      $(oParentDoc).addClass("loading"); 
      $.post(action,postdata,function(data){ 
       $(oParentDoc).removeClass("loading").effect("shake",{"times":3,"distance":10},60); 
      }); 
      return false; 
     }); 
    } 
}); 

這工作沒有效果,但是當我使用的效果它給我這個錯誤:

uncaught exception: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIDOMCSSStyleDeclaration.getPropertyValue]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"

預先感謝任何見解:)

+0

也有類似的問題,與從一個iframe父事件的綁定,但它與谷歌地圖。對我來說,它在其他瀏覽器中工作,甚至仍然在ff工作,但拋出了錯誤。我剛剛使用了一個try/catch,並沒有真正解決這個問題,但讓我繼續 - – chrismarx 2011-04-06 15:27:19

回答

0

有無您是否將必要的jQuery文件加載到父文檔以及iframe文檔中?

更新:在互聯網上的一點研究表明,'效果'代碼可能調用'getPropertyValue'和Firefox聲稱該方法不存在。我知道 - 不是很有幫助。不幸的是我相信你將不得不調試'效果'代碼來更具體地瞭解它的錯誤,或者可能發現它是你試圖運行的iframe場景的限制。

+0

是的:)這是我檢查的第一件事。我有jquery 1.3.2和effects.core.js和effects.shake.js加載iframe和外部。 – 2010-02-02 08:37:39

0

這可能是您的Iframe的規格已定義。因此,不允許Iframe進行任何移動/更改?

+0

那麼..雖然這確實使某種意義上,我不認爲這是這種情況..因爲我有一個div持有的iframe和該div具有UI拖動功能應用。我可以拖放iframe,沒問題。這裏的區別是我設置了一個JavaScript文件之外的可拖動的iframe。我也可以從外部動搖iframe,但不能從內部動搖。 – 2010-02-02 08:41:34

+0

如何引用JS文件。由於如果您有子文件夾,Iframe不再「被假定」在同一個地方。所以也許有iframe頁面引用就好像它在你正在使用的頁面中一樣。我目前正試圖解決轉換爲PHP頁面等類似問題。 – Sphvn 2010-02-03 01:11:56

1

我不確定這是否會工作,但您可以嘗試在父級中設置綁定事件,然後在iFrame中嘗試在父級中觸發該事件。

家長的JavaScript

$(document).ready(function(){ 
    $('#iframe').bind('shakeFrame',function(){ 
     $('#iframe').effect("shake",{"times":3,"distance":10},60); 
    }); 
}); 

的iFrame的JavaScript

$(document).ready(function(){ 
    $(parent.document).find('#iframe').trigger('shakeFrame'); 
});