2011-10-05 61 views
0

有一個網站,其中包含一個包含Web應用程序的iframe。我們假設該應用程序的高度爲1000px。在應用程序的底部(1000px)有按鈕。如果用戶按下該按鈕,則應用程序將更改其視圖,新的長度僅爲20px(因此20px至1000px的範圍僅爲白色(空白頁))。將頁面從iframe滾動到頁首(包含gwt應用程序)

我的目標是現在,當有人按下該按鈕時,瀏覽器應該將其頁面滾動到頂部(這意味着滾動發生在iframe之外)有沒有人知道解決方案如何在gwt中做到這一點(沒有設置錨定在頁保持的iframe)?

提前許多THX!

回答

1

最後我找到了解決方案。設置你的iframe錨的頂部,並把它稱爲:

public static native void scrollToTop() /*-{ 

    $wnd.location.href = '#anchorName'; 

}-*/; 

這也將迫使父窗口(窗口持有的iframe)滾動到錨。

+0

你可以擴大這個?你在哪裏放這個功能?你如何調用它,你從哪裏調用它? – Induster

+0

你可以把這個函數放到你做錨定調用的類中,我建議避免跨站點操作。並非所有的瀏覽器都支持這個功能,並且在未來看起來不是這樣它將被支持。示例如何使用它:https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsJSNI – mkn

0

Scrolling with javascript

大多數人討厭I幀的一些原因,雖然,你應該避免,如果在所有可能的使用它們。

+0

我希望我能做到這一點:)。如果另一家公司在iframe中包含你的一個小應用程序,那麼這是沒有辦法的... – mkn

0

如何使用JSNI並在父窗口或頂窗中滾動?這樣的事情:

 
public static native void scrollToTop() /*-{ 
    $wnd.parent.scrollTo(0,0); // or `$wnd.top.scrollTo(0,0); 
}-*/; 

頂部的組合也應該只用「窗口」。 $ wnd只是因爲GWT實際上在嵌入式iframe中運行。但是我不確定如果你的代碼來自不同的服務器,你的代碼將被允許滾動父文檔。

+0

這兩個建議的解決方案不適用於我:( – mkn

0

如何調用java腳本函數滾動到持有iframe的頁面的div ID?那可能嗎?