2010-06-17 195 views

回答

46

關鍵是要追加以下onload="window.parent.parent.scrollTo(0,0)"iframe和應該這樣做!

+2

謝謝!如果您在iframe中的body標籤中執行onload =「window.parent.scrollTo(0,0)」,它也可以工作。 – aruanoc 2014-02-21 16:51:25

+2

將onload添加到iframe標記比將其添加到body標記要性感得多,因爲如果他們使用CMS,很多人都不能手動標記「body」。好的建議,但! – Evan 2014-06-13 14:04:09

+4

@aruanoc僅當iframe中的域與父域匹配時纔有效。 – voodoocode 2015-04-17 12:51:04

9

在iframe中使用JavaScript,引用父項並調用scroll()方法。

window.parent.scroll(0,0); 
+0

非常感謝:D – Pomster 2014-01-27 09:27:19

5

在iframe頁面中。

window.parent.ScrollToTop(); // Scroll to top function 

論parrent頁:

window.ScrollToTop = function(){ 
    $('html,body', window.document).animate({ 
    scrollTop: '0px' 
    }, 'fast'); 
}; 
1

如果你有交叉的起源(iframe和家長有不同的域),那麼就調用window.scrolTo(0,0)將無法正常工作。

交叉原點的一個解決方案是從iframe向父級發送可信消息。

代碼的iframe中:

var parent_origin = 'http://your/iframe/domain/here' 
parent.postMessage({'task': 'scroll_top'}, parent_origin); 

然後代碼在父:

function handleMessage(event) { 
    var accepted_origin = 'http://your/iframe/domain/here'; 
    if (event.origin == accepted_origin){ 
     if (event.data['task'] == 'scroll_top'){ 
      window.scrollTo(0,0); 
     } 
     // you can have more tasks 
    } else{ 
     console.error('Unknown origin', event.origin); 
    } 
} 

window.onload = function() { 
    window.addEventListener("message", handleMessage, false); 
} 
相關問題