我想要做的是在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,但小程序本身不是一个更新面板,我相信它不是”不会重新加载。
希望我能充分解释这一点。 感谢您对此的任何帮助/想法!
如果您使用JavaScript计时器来延迟对CallAppletFunction的调用,会发生什么情况?例如setTimeout('CallAppletFunction(dataForApplet)',1000) – Phaedrus 2009-11-16 18:13:26
我试着在思考同样的事情,没有骰子的几个变化。我也尝试循环寻找Applet.IsActive()并在每个之间暂停1秒,并且它永不结束。我记得以前尝试检查IsActive()函数让我怀疑它,尽管如此我没有在其中放置很多股票。谢谢! – elo 2009-11-16 19:38:32