2009-11-16 37 views
0

我想要做的是在PostBack的ASP.NET頁面之後立即調用Java Applet方法。爲了做到這一點,我使用了ScriptManager.RegisterStartupScript函數,該函數通過一個小腳本塊調用頁面中的一個函數,然後調用Applet函數。它似乎是多步驟的,但如果我只是嘗試從後面的代碼中編寫的腳本塊中調用Applet函數,那麼我什麼也得不到。我實際上已經實現了我之後的結果,但只有當我第一次將JavaScript警報放入由腳本塊後面的代碼調用的函數中時。從RegisterStartupScript調用Applet函數

問題是否有人知道如何解決必須在Applet函數被調用之前觸發警報?

下面是一些簡化的僞代碼,以更好地描述場景。

(.ascx.cs - yes this is in a user control, perhaps that is problematic?) 
protected void SetupAppletInput() 
{ 
    string scriptBlock = CreateJavaScriptBlock(dataForApplet); 
    ScriptManager.RegisterStartupScript(grvDataSet, grvDataSet.GetType(), "clicky", scriptBlock, true); 
} 
protected string CreateJavaScriptBlock(String dataForApplet) 
{ 
    StringBuilder sb = new StringBuilder(); 
    sb.Append("CallAppletFunction(dataForApplet);"); 
    return sb.ToString(); 
} 

(.ascx) 

    function CallAppletFunction(dataForApplet) 
    { 
     alert("Calling applet function"); // with this line in it works, but is really annoying to have to click the alert off for every PostBack 
     document.ReallyCoolApplet.functionToCall(dataForApplet); 
    } 



外面的這一點,我相信只有相關的事實是,該網頁的部分被調回是一個UpdatePanel,但小程序本身不是一個更新面板,我相信它不是」不會重新加載。

希望我能充分解釋這一點。 感謝您對此的任何幫助/想法!

+0

如果您使用JavaScript計時器來延遲對CallAppletFunction的調用,會發生什麼情況?例如setTimeout('CallAppletFunction(dataForApplet)',1000) – Phaedrus 2009-11-16 18:13:26

+0

我試着在思考同樣的事情,沒有骰子的幾個變化。我也嘗試循環尋找Applet.IsActive()並在每個之間暫停1秒,並且它永不結束。我記得以前嘗試檢查IsActive()函數讓我懷疑它,儘管如此我沒有在其中放置很多股票。謝謝! – elo 2009-11-16 19:38:32

回答

0

遲了,但我最好的方法是從applet start方法中調用javascript。

然後,您應該可以從那裏正確調用小程序。

這樣做似乎有點多餘,因爲您始終可以讓applet在start方法中正確執行某些操作。

這樣你就不用擔心等待一段時間,只要小程序加載它就會觸發啓動方法。

相關問題