如何立即从 vb 代码调用 javascript 函数

How do I call a javascript function immediately from the vb code

这是我的 sciprt,它显示一个带有 'Ok' 和 'Cancel' 按钮的消息框

<script type="text/javascript"> function Confirm() { 
    var confirm_value = document.createElement('INPUT'); 
    confirm_value.type = 'hidden'; 
    confirm_value.name = 'confirm_value'; 
    if (confirm('Continue?')) { 
    confirm_value.value = 'Yes'; 
    } else { 
       confirm_value.value = 'No';} 
    document.forms[0].appendChild(confirm_value);} </script>

在我的程序中,我是 运行 一个查询,如果没有结果,那么我会显示这个 "Dialog" 框

我想在获得查询结果后立即调用该函数,但我当前的代码似乎是 运行 它是在一切之后而不是立即调用。

If reader.read = false then
    If Not Page.ClientScript.IsStartupScriptRegistered(Me.GetType(), "alertscript") Then
        Page.ClientScript.RegisterStartupScript(Me.GetType(), "alertscript", "Confirm();", True)
    End if

    Dim confirmValue As String = Request.Form("confirm_value")
    If confirmValue = "Yes" Then
        'Do stuff here
    End if
End if

对我来说,这个请求通常代表对正在发生的事情的误解。当时您的 VB.Net 代码是 运行,javascript 不存在 。所有服务器事件处理程序都会导致 完整回发 。这意味着 整个页面 是从头开始重新创建的。此处的 VB.Net 代码是生成全新 HTML 文档的过程的一部分。这将涉及 整个页面生命周期 ,包括您服务器的 Page_Load 代码。引发该事件时,已在浏览器中呈现的任何 html 都被 销毁 以便为您对全新 HTTP 请求的响应腾出空间。

如果您希望它做出不同的响应,您需要在构建整个 HTTP 响应时考虑到这一点。这意味着要么从一开始就更改事件的引发方式(调用 WebMethod 或其他 ajax 请求),要么将您的响应设置为在 javascript 页面加载事件中调用您的确认方法。