2013-03-18 54 views
2

我一直在嘗試使用來自here的信息根據其內容調整iFrame的大小。他的演示位於here如何通過jQuery調整iFrame的大小?

我使用了以下內容:

$("#IframeId").load(function() { 
    $(this).height($(this).contents().find("body").height()); 
}); 

是在.find("body")在內部iframe中的內容的標題部分檢查「身體」?我確實在託管頁面中看到了這一點。

我還添加以下到上面的代碼:

alert($(this).height($(this).contents().find("body").height())); 

我沒有看到警報。

+0

您正在使用鏈接問題的問題的方法,而不是答案,該問題的開啓者明確提到他的方法不起作用。你爲什麼不復制在答案中提出的解決方案之一? – 2013-03-18 22:50:36

+0

我已經更新了這個問題。 – 4thSpace 2013-03-18 23:19:37

+0

查看這個問題的答案:http://stackoverflow.com/questions/701339/resizing-iframe-to-fit-its-content/4585053 – Ferruccio 2013-03-18 23:26:59

回答

1

我想你必須嘗試找到IFrame源代碼中某個特定元素的高度,而不是html標籤本身,因爲它沒有指定的高度。這是一個工作示例:

$("#IframeId").load(function() { 
    $(this).height($(this).contents().find("#box").height()); //box can be changed to the id of the element you want 
}); 

如果您有您想要的iframe來是寬度的div容器,你可以使用它的ID,而不是對話框。 (注意:框是this JsFiddle示例中的主要元素的ID。)

+0

謝謝。我沒有看到我的警報在iframe加載中觸發。它使用runat = server屬性來獲取HTML元素,這會在運行時變成一些損壞的ID。但$(「#IframeId」)應該爲那個工作嗎? – 4thSpace 2013-03-19 01:56:34

+0

我想我的jQuery獲取服務器控件引用是不正確的。我把它放在alert中:$(「#IframeId」)。attr('id')。它給了一個不確定的。當我使用錯誤的asp.net生成的ID替換#IframeId時,我在警報中看到ID。 – 4thSpace 2013-03-19 02:34:17

+0

$(「#iframeid」)。attr('id')'正在做的是要求具有id「iframeid」的元素。由於您很可能沒有ID爲「iframeid」的元素,因此此代碼返回未定義。如果您使用Asp.NET 4.0,則可以在您的iframe上爲您添加「ClientIDMode =」Static「'屬性。 – Jsterman 2013-03-19 02:54:32