2010-08-11 89 views
0

我已經在OnPreRender()方法內部將下面的代碼添加到MOSS 2007 Web部件。Javascript Anchor跳轉到頂部問題

if (!Page.ClientScript.IsClientScriptBlockRegistered("jump_to_anchor_JS")) 
{ 
    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "jump_to_anchor_JS", "window.location.hash=\"anchor\";",true); 
} 

頁面加載後,跳轉到特定的錨點,然後跳回到頁面的頂部。 這已經在IE8,Firefox,Chrome和Safari中以相同的行爲進行了測試。

有沒有想法?

+0

這是什麼問題? – 2010-08-11 20:19:51

+0

如前所述,頁面不會停留在我想要的錨處,但會跳回到頁面的頂部。 – madatanic 2010-08-11 20:27:12

回答

0

嘗試使用:

ClientScript.RegisterStartupScript(...) 

從MSDN文章here

由 的的RegisterStartupScript方法 當頁面完成 加載執行,但該頁面的客戶端之前作出的腳本塊 onload事件被引發。啓動腳本 塊位於 底部的呈現ASP.NET頁面之前的 表單標記。

或使用jQuery:

$(document).ready(function(){window.location.hash="anchor";}); 
+0

我已經試過。在第一個頁面中,頁面根本不會跳轉到錨點。第二個,同樣的行爲。不過謝謝您的幫助。 – madatanic 2010-08-11 20:26:28

+0

此外,www.example.com#my_anchor的默認功能是向下滾動頁面並找到 2010-08-11 20:31:59

+0

您還可以添加超時:) $(document).ready(function(){window.setTimeout('window .location.hash =「anchor」;',1000);}); – 2010-08-11 20:39:37

0

你,包括你的錨名稱前面的 「#」 井號?即,

window.location.hash = '#anchor'; 

此外,請參閱window.location.hash issue in IE7關於使用聚焦()或scrollIntoView()代替。

+0

也試過這個,#號沒有什麼區別。 也試過string.Format(「document.getElementsByName('{0}')[0] .scrollIntoView(true);」,「anchor」);.也沒有工作。 似乎SharePoint正在與我混淆。 – madatanic 2010-08-11 20:43:41

0

嘗試使用

window.location.href ='#anchor';