首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RegisterClientScriptBlock混淆

RegisterClientScriptBlock混淆
EN

Stack Overflow用户
提问于 2010-09-10 20:30:31
回答 2查看 2.7K关注 0票数 1

我的主网页包含JS代码,用于使用自定义jQuery对话框覆盖标准警报。

代码语言:javascript
复制
<script type="text/javascript" language="javascript">
        window.alert=function(alertMessage)
        {
          $.msgbox(alertMessage, {type: "info"});  
         }             
</script>

在default.aspx网页onLoad方法中,我尝试注册和显示警报脚本

代码语言:javascript
复制
 Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "InvalidPassword",
                "alert(\"Your login attempt was not successful. Please try again.\");",
                true);

不幸的是,它不起作用。如果我删除覆盖警告框一切正常的JS代码,就会出现警告框。覆盖JS是正确的,如果我在客户端执行alert js,它可以正常工作,但如果我试图从服务器端执行代码,它就不能工作。

谁能解释一下问题出在哪里?

EN

回答 2

Stack Overflow用户

发布于 2010-09-10 20:57:40

当我尝试从aspx页面的page_load事件运行它时,我得到了同样的问题,但是当我从body onload事件运行它时,它工作了。我认为这是因为page_load事件在您的window.alert重写有机会运行之前发生。

在body标记中尝试这样做:

代码语言:javascript
复制
<body onload="alert('Your login attempt was not successful. Please try again.');">  

和jQuery:

代码语言:javascript
复制
$(function () {

        window.alert = function (message) {
            $('#dialog').text(message).dialog();
        }

 });

顺便说一句,我使用的是jQuery UI对话框插件。

票数 3
EN

Stack Overflow用户

发布于 2010-09-10 20:58:42

好了,我找到问题所在了。如果在RegisterClientScriptBlock中注册的代码引用了另一个JS代码,那么我们需要加载完整的网页。无论网页是否完全加载,在RegisterClientScriptBlock中注册的JS在浏览器中加载时似乎都会立即执行。所以我们需要在网页完全加载后执行代码。我们可以使用下面的jQuery event找到它

代码语言:javascript
复制
  $(document).ready(function() {



  });

完整的代码将如下所示

代码语言:javascript
复制
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "InvalidPassword",
                    "$(document).ready(function() {alert(\"Your login attempt was not successful. Please try again.\");})",
                    true);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3684596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档