我的主网页包含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是正确的,如果我在客户端执行alert js,它可以正常工作,但如果我试图从服务器端执行代码,它就不能工作。
谁能解释一下问题出在哪里?
发布于 2010-09-10 20:57:40
当我尝试从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对话框插件。
发布于 2010-09-10 20:58:42
好了,我找到问题所在了。如果在RegisterClientScriptBlock中注册的代码引用了另一个JS代码,那么我们需要加载完整的网页。无论网页是否完全加载,在RegisterClientScriptBlock中注册的JS在浏览器中加载时似乎都会立即执行。所以我们需要在网页完全加载后执行代码。我们可以使用下面的jQuery event找到它
$(document).ready(function() {
});完整的代码将如下所示
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "InvalidPassword",
"$(document).ready(function() {alert(\"Your login attempt was not successful. Please try again.\");})",
true);https://stackoverflow.com/questions/3684596
复制相似问题