如何从asp.net子函数调用javascript函数?

时间:2012-08-03 18:35:41

标签: asp.net vb.net

因此经过广泛搜索后,我发现为了触发javasript函数,我们可以这样做:

<script>
function foobar()
  {
   alert("foobar");
  }
</script>

Dim strScript As String = "<script language='javascript' id='myClientScript'>foobar();</script>"

Page.RegisterStartupScript(“callTest”,strScript)

但是,Page.RegisterStartupScript似乎只能在Page_load函数下工作....

当我把它放在Sub中时,就像这样:

Sub Test

Dim strScript As String = "<script language='javascript' id='myClientScript'>foobar();</script>"

Page.RegisterStartupScript(“callTest”,strScript)

End Sub

这不起作用。当我将上述功能链接到asp按钮时。我触发了按钮,但没有任何反应。那么无论如何从asp.net有条件地触发javaScript函数?从Sub函数而不是每个page_load?

谢谢!

3 个答案:

答案 0 :(得分:0)

你应该代表这一行

Dim strScript As String = "<script language='javascript' id='myClientScript'>foobar();</script>"

as

Dim strScript As String
strScript = "<script language='javascript' id='myClientScript'>foobar();</script>"

如果你想点击javascript for asp.net按钮,你可以使用OnClientClick属性和客户端函数OnClientClick="buttonClick()": -

<asp:button id="Button1" 
  runat="server" 
  OnClientClick="buttonClick()" 
  Text="Click!" />

答案 1 :(得分:0)

首次加载页面时,将执行使用RegisterStartUpscript方法注入的javascript。当您需要在

之后注入并执行javascript时,请尝试使用RegisterClientScriptBlock方法
Type t = this.GetType();
if (!ClientScript.IsClientScriptBlockRegistered(t, "myClientScript"))
{
   ClientScript.RegisterClientScriptBlock(t,"myClientScript", sb.ToString());
}

不确定它是否可以在更新面板内工作

答案 2 :(得分:0)

以下是我正在使用的JavaScript函数,并在我工作的众多Web应用程序中使用过。在这个具体的例子中,我将客户端IP地址与我们网络上的预定IP地址进行比较,如果客户端IP不匹配,我会显示一个消息框,然后通知用户他们的特定计算机终端不允许提出这些具体要求。

Dim ipAdd as string = nothing
ipAdd = Request.ServerVariables.Item("REMOTE_ADDR")
If ipAdd <> "###.###.###.###" then
ClientScript.RegisterClientScriptBlock(Page.GetType, "Script", "<script language='javascript'>alert('This terminal is not permitted to submit requests.');</script>")
End If