我的 .aspx 页面中有一个脚本(HTML标记):
<div id="alert">
<asp:Label ID="lblAlert" style="font-size: xx-large" runat="server"></asp:Label>
</div>
<!-- /.alert -->
<script>
function AutoHideAlert(v) {
var al = document.getElementById('<%=lblAlert.ClientID%>');
al.innerText = v;
$("#alert").fadeTo(3500, 500).slideUp(1500, function () {
$("#alert").slideUp(500);
});
}
</script>
我使用AutoHideAlert(v)
在 aspx.cs 文件(代码隐藏)中调用RegisterStartupScript
函数,并在{{{}}中添加了RegisterStartupScript
1}}方法:
ShowMessage
问题是当我调用包含脚本代码行的private void ShowMessage(string msg)
{
ScriptManager.RegisterStartupScript(this, GetType(), null, "AutoHideAlert('"+msg+"');", true);
}
方法时,它无效。但是当我运行脚本代码行然后它的工作;问题是为什么它没有与ShowMessage
一起运行?
编辑1:来自@ M4N的评论,我通过将第三个参数设置为ShowMessage
来尝试它,但它仍无效。
"Alert Message"
答案 0 :(得分:1)
我认为ScriptManager.RegisterStartupScript
在生成带有方法的脚本之前生成脚本。由于JS在浏览器读取时执行,因此在执行时AutoHideAlert
如果还不存在的话
尝试使用$(document).ready
你有JQuery
ScriptManager.RegisterStartupScript(this, GetType(), "Alert Message",
"$(document).ready(function(){ AutoHideAlert('"+msg+"'); }", true);
或者没有JQuery的document.addEventListener('DOMContentLoaded'
ScriptManager.RegisterStartupScript(this, GetType(), "Alert Message",
"document.addEventListener('DOMContentLoaded',
function(){ AutoHideAlert('"+msg+"'); })", true);