好的,這感覺就像一個應該很容易回答的問題,但是像asp.net和jQuery混合那麼多,這有點噩夢。從asp.net代碼隱藏中執行Javascript函數?
我想要做我的asp.net頁面的客戶機的觀看過程中可以淡入淡出一div
在不同的時間;我在使用jQuery的fadeTo()
之前將其淡出,然後觸發UpdatePanel更新(表示數據不是新鮮的),並且我想在更新UpdatePanel後再次將其淡入淡出。我已經儘可能在代碼隱藏中更新UpdatePanel,並且這導致div
的內容更改......但是如何再次將div
淡化?
我看到它,有2種方式的方式;在頁面加載時註冊一個事件處理程序以檢測div
的內容何時被更改並淡入,或者在更新div
以使其淡入時調用asp.net代碼隱藏的函數。
在第一種情況下,似乎沒有要由div
的內容改變觸發任何事件,所以我似乎無法做到這一點。如果有人知道如何在更新div
時得到客戶端事件觸發,那將是一個不錯的解決方案。
在第二種情況下,我認爲這是一次什麼樣的ClientScriptManager
,但它並不完全做我想做的。我希望能夠註冊一個特定的Javascript函數ClientScriptManager
,然後告訴ClientScriptManager
在我的代碼隱藏中在客戶端執行它。你似乎無法做到這一點。 ClientScriptManager.RegisterClientScriptBlock()
只是將一些<script>
插入到HTML輸出中,而不是調用函數。據推測,如果我保持註冊狀的東西這樣的工作:
<script>fadeBackIn();</script>
因爲使用Javascript將立即評估和運行,但這種感覺亂了,這種感覺是由事實加劇了,我不得不保持隨機產生爲ClientScriptManager.RegisterClientScriptBlock()
的key
爭論一個新的獨特的價值,因爲它是專門用來停止這種重複的代碼。但是,我正在努力尋找替代方案。任何人都可以想出一個好主意,以更好的機制來實現這個工作嗎?
我真的很想沿着線的東西:
ClientScriptManager.RegisterClientScriptFunction("fadeBackIn", "function fadeBackIn(){ ... }");
[...]
ClientScriptManager.ExecuteClientScriptFunction("fadeBackIn");
,但我不認爲這功能可用。 :-(
你怎麼能指望的時候被在服務器上執行它ClientScriptManager調用客戶端代碼? – Dismissile 2010-11-03 14:27:42
推測,使用允許代碼隱藏動態更新UpdatePanel內容的相同機制。一個允許客戶端和服務器之間進行AJAX通信的框架。 – Jez 2010-11-03 14:29:08