0

当他的会话到期并且在母版页下引用默认页面时,我将我的用户重定向到我的 default.aspx。我显示了一个类似 twitter 的通知,说明Session Expired它在 Firefox 和 google chrome 中运行良好,但在 IE 中运行良好。我明白了Internet Explorer cannot open site-http://localhost:1335/order/Default.aspx?Sid=1 Operation aborted

我对此进行了谷歌搜索,发现$(document.body).append()如果我将脚本移动到页面底部,则在正文标记出现问题之前,我的通知在任何浏览器中都不起作用。

这是我的母版页,

<head runat="server">
    <title></title>

    <script src="Javascript/Jquery1.4.js" type="text/javascript"></script>

    <script type="text/javascript">
        function topBar(message) {
            $("#alertmsg").remove();
            var $alertdiv = $('<div id = "alertmsg"/>');
            $alertdiv.text(message);
            $alertdiv.bind('click', function() {
                $(this).slideUp(200);
            });
            $(document.body).append($alertdiv);
            $("#alertmsg").slideDown("slow");
            setTimeout(function() { $alertdiv.slideUp(200); }, 5000);
        }
    </script>

    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>

我的 topbar 函数在我的 default.aspx 页面中被调用,

protected void Page_Load(object sender, EventArgs e)
{
    Int64 id = GetId(Request.RawUrl.ToString());
  if (id == 1)
  {
    ScriptManager.RegisterClientScriptBlock(Page, this.GetType(), "json", "topBar('Session Expired');", true);
  }
}
4

1 回答 1

1

我找不到topBar被调用的地方,但如果我从中调用它,$(document).ready()它在我的 IE8 中就像一个魅力:

<script type="text/javascript"> 
    function topBar(message) { 
        $("#alertmsg").remove(); 
        var $alertdiv = $('<div id = "alertmsg"/>'); 
        $alertdiv.text(message); 
        $alertdiv.bind('click', function() { 
            $(this).slideUp(200); 
        }); 
        $(document.body).append($alertdiv); 
        $("#alertmsg").slideDown("slow"); 
        setTimeout(function() { $alertdiv.slideUp(200); }, 5000);
    }

    $(document).ready(function() {
        topBar("Hello world!");
    });
</script> 

$(window).load()如果您有图形和/或其他需要在topBar()调用之前加载的重元素,您也可以使用:

$(window).load(function() {
    topBar("Hello world!");
});

希望能帮助到你。

编辑:


也许会有所帮助?基本上你可以做这样的事情:

ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "json",  
    @"$(document).ready(function(){   
             topBar("Hello world!");
             }); 
        });", true); 

查看链接中的答案,因为他提供了几种选择

于 2010-08-19T05:25:55.053 回答