在 UpdatePanel 更新后注册动态 javascript

Posted

技术标签:

【中文标题】在 UpdatePanel 更新后注册动态 javascript【英文标题】:Registering a dynamic javascript after an UpdatePanel's update 【发布时间】:2010-10-03 23:44:40 【问题描述】:

我有一个动态创建的 javascript 页面(脚本实际上是相当静态的,但其变量的值是根据用户输入填充的)。

获取用户输入的结果和控件位于 UpdatePanel 中,该面板会根据某些用户输入进行自我更新。其中一些用户输入会导致我之前提到的变量发生变化,因此我需要注册一个新的 javascript。

问题当然是只有更新面板得到更新,并且脚本在更新面板之外注册,因此没有添加新脚本。

您认为现在的最佳做法是什么?我可以通过让这个脚本(和变量)在更新面板 inside 中存在来解决这个问题,或者我可以确保在需要发布新的 javascript 时完全重新加载页面?我已经在页面上的 ScriptManager 可能可以帮助我解决这个问题...

所以我正在寻找有类似问题并以很好的方式解决它们的人,或者只是有一些好主意的人:)

【问题讨论】:

【参考方案1】:

看看ScriptManager.RegisterClientScriptBlock

【讨论】:

【参考方案2】:

ScriptManager.RegisterStartupScript 的运气比ScriptManager.RegisterClientScriptBlock 的好。你可以试一试。

【讨论】:

【参考方案3】:

为什么不直接将变量放在更新面板中,或者让 JavaScript 通过 DOM 获取值?

【讨论】:

是的,放置变量(或完整脚本)是我的建议之一,但感谢这一点 - javascript 无法通过 dom 获取它,因为数据不是 dom 的一部分(它是实际上用于更新 dom 的数据作为用户输入的东西) 您可以将数据添加到 DOM,或者拧紧 UpdatePanel,然后调用 AJAX/SciptMethod 来获取数据。 拧紧更新面板似乎是正确的选择。 UpdatePanel 又快又脏,但有时还不够

以上是关于在 UpdatePanel 更新后注册动态 javascript的主要内容,如果未能解决你的问题,请参考以下文章

找不到ID为'xxx'的UpdatePanel。如果它是动态更新的,那么它必须在另一个UpdatePanel内

[jQuery]UpdatePanel更新后的连接事件

UpdatePanel AsyncPostBackTrigger PostBackTrigger 区别

asp.net网站显示动态时间

加载特定 UpdatePanel 后如何调用客户端 javascript 函数

使用 UpdatePanel 从页面上的 Web 控件注册样式表