[英]RegisterClientScriptBlock confusion
我的主网页包含JS代码,以使用自定义jQuery对话框覆盖标准警报。
<script type="text/javascript" language="javascript">
window.alert=function(alertMessage)
{
$.msgbox(alertMessage, {type: "info"});
}
</script>
在default.aspx网页的onLoad方法中,我试图注册并显示警报脚本
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "InvalidPassword",
"alert(\"Your login attempt was not successful. Please try again.\");",
true);
不幸的是,它不起作用。 如果我删除覆盖警报框的JS代码,则一切正常,将出现警报框。 重写JS是正确的,如果我在客户端执行警报js,它可以正常工作,但是,如果我尝试从服务器端执行代码,则它不起作用。
谁能解释问题出在哪里?
当我尝试从aspx页面的page_load事件运行它时,我遇到了同样的问题,但是当我从body onload事件运行它时,它起作用了。 我认为发生这种情况是因为page_load事件发生在window.alert重写有机会运行之前。
在body标签中尝试:
<body onload="alert('Your login attempt was not successful. Please try again.');">
和jQuery:
$(function () {
window.alert = function (message) {
$('#dialog').text(message).dialog();
}
});
顺便说一下,我使用了jQuery UI对话框插件。
好的,我发现问题出在哪里。 如果在RegisterClientScriptBlock中注册的代码引用了另一个JS代码,则我们需要完整加载网页。 似乎在RegisterClientScriptBlock中注册的JS在加载到浏览器中时会立即执行,无论网页是否完整加载。 因此,我们需要在网页完全加载后执行代码。 我们可以使用下面的jQuery事件找到它
$(document).ready(function() {
});
完整的代码如下所示
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "InvalidPassword",
"$(document).ready(function() {alert(\"Your login attempt was not successful. Please try again.\");})",
true);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.