Javascript 无法在 ClientScriptManager 内触发

Posted

技术标签:

【中文标题】Javascript 无法在 ClientScriptManager 内触发【英文标题】:Javascript cannot fire inside the ClientScriptManager 【发布时间】:2018-12-02 08:56:18 【问题描述】:

我需要检查一些东西来决定是否显示警告。问题是javascript没有触发。有人可以帮我解释为什么。我已经在网上搜索过,看起来我的脚本很好。

这是我的代码:

Private Sub ShowWarning(ByVal ID As Integer)

    Dim ds As DataSet = reminders.getJuryPaymentDueEvent(ID)
    If ds.Tables(0).Rows.Count > 0 Then
        Dim cs As ClientScriptManager = Page.ClientScript
        Dim script As String = "javascript:confirm('There is a record and  it will be deleted')"
        cs.RegisterStartupScript(Page.GetType(), "confirm", script, True)
    End If
End Sub


 Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click

   If hasorder() then  'there is other function which works fine
        ShowWarning(ID)
        'if confirm return ture
        deleteOrder()
  end if
End Sub

【问题讨论】:

【参考方案1】:

如果页面有 AJAX 更新面板,则 ClientScript.RegisterClientScriptBlock 和 ClientScript.RegisterStartupScript 方法不起作用。

改为使用 ScriptManager 的 RegisterClientScriptBlock 和 RegisterStartupScript 方法。

如果您的页面没有 AJAX,则调试代码放置断点以检查代码是否正在进入 ShowWarning() 方法中的 If...Then 阻塞。

【讨论】:

我把断点放在If stamen后面,代码正在进入scriptManager。但是不弹出确认框 尝试用以下代码替换代码:cs.RegisterStartupScript([GetType](), "confirm", script, True) 或者直接使用这段代码而不分配对象变量: Dim script As String = "javascript:confirm('有一条记录将被删除')" ClientScript.RegisterStartupScript([GetType]() , "确认", 脚本, True)

以上是关于Javascript 无法在 ClientScriptManager 内触发的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Firefox 上从 Javascript 提交表单

为啥我的 JavaScript 在 Safari 的严格模式下无法正常工作?

无法在 JavaScript 中调用 api(跨源)

无法在 javascript 中“转换”打字稿定义

无法在 javascript 中访问模型的属性

无法在 Phonegap 中从 javascript 调用本机函数