从RegisterStartupScript调用Applet函数

时间:2009-11-16 17:28:26

标签: asp.net javascript applet

我要做的是在ASP.NET页面的PostBack之后立即调用Java Applet方法。为了实现这一点,我使用ScriptManager.RegisterStartupScript函数,我传递一个小脚本块来调用页面中的函数然后调用Applet函数。这似乎是多步骤但如果我只是尝试从后面的代码中编写的脚本块调用Applet函数,我什么也得不到。我实际上已经实现了我追求的结果,但只有当我第一次在脚本块后面的代码调用的函数中放置JavaScript警报时。

问题是有人知道如何在调用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中,但Applet本身不在更新面板中,我相信它不会重新加载。< / p>

希望我能充分解释这一点。 感谢您对此有任何帮助/想法!

1 个答案:

答案 0 :(得分:0)

迟到但我这样做的好方法是从applet start方法调用javascript。

然后,您应该可以从那里正确调用applet。

这样做似乎有点多余,因为你总是可以让applet在start方法中做正确的事情。

这样您就不必担心等待一段时间了,一旦applet加载它就会触发start方法。