$(document.body的).append()似乎并不在IE工作 [英] $(document.body).append() doesn't seem to work in IE

查看:2035
本文介绍了$(document.body的).append()似乎并不在IE工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在他的会话过期和默认页面是一个母版页下引用我重定向我的用户我的Default.aspx。我告诉像Twitter,说明会话过期的通知什么情况是在Firefox和谷歌Chrome,但不是在IE浏览器工作正常。我得到 Internet Explorer无法打开站点的http://本地主机:1335 /顺序/ Default.aspx的SID = 1操作已中止

我GOOGLE了这一点,并发现 $(document.body的).append()前body标签是问题,如果我移动脚本到我的我的页面底部我的通知不会以任何浏览器。

下面是我的母版页

 <头=服务器>
    <标题>< /标题>    <脚本SRC =使用Javascript / Jquery1.4.js类型=文/ JavaScript的>< / SCRIPT>    <脚本类型=文/ JavaScript的>
        功能顶栏(消息){
            $(#ALERTMSG),删除()。
            变量$ alertdiv = $('< D​​IV ID =ALERTMSG/>');
            $ alertdiv.text(消息);
            $ alertdiv.bind('点击',功能(){
                $(本).slideUp(200);
            });
            $(document.body的).append($ alertdiv);
            $(#ALERTMSG)了slideDown(慢)。
            的setTimeout(函数(){$ alertdiv.slideUp(200);},5000);
        }
    < / SCRIPT>    < ASP:的ContentPlaceHolder ID =头=服务器>
    < / ASP:&的ContentPlaceHolder GT;
< /头>
<身体GT;

和我的顶栏函数被调用我的Default.aspx页面,

 保护无效的Page_Load(对象发件人,EventArgs的发送)
{
    Int64的ID = GETID(Request.RawUrl.ToString());
  如果(ID == 1)
  {
    ScriptManager.RegisterClientScriptBlock(页,this.GetType(),JSON,顶栏(会话已超时');,真正的);
  }
}


解决方案

我找不到其中顶栏​​就是所谓的地方,但如果我把它从 $(文件)。就绪()它的工作就像在我的IE8魅力:

 <脚本类型=文/ JavaScript的>
    功能顶栏(消息){
        $(#ALERTMSG),删除()。
        变量$ alertdiv = $('< D​​IV ID =ALERTMSG/>');
        $ alertdiv.text(消息);
        $ alertdiv.bind('点击',功能(){
            $(本).slideUp(200);
        });
        $(document.body的).append($ alertdiv);
        $(#ALERTMSG)了slideDown(慢)。
        的setTimeout(函数(){$ alertdiv.slideUp(200);},5000);
    }    $(文件)。就绪(函数(){
        顶栏(世界,你好!);
    });
< / SCRIPT>

您也可以使用 $(窗口).load()如果您有需要的图形和/或其他重元素之前加载顶栏()正所谓:

  $(窗口).load(函数(){
    顶栏(世界,你好!);
});

希望它帮助。

编辑:


可以是一些帮助吗?基本上你可以做这样的事情:

  ScriptManager.RegisterClientScriptBlock(此的typeof(页),JSON
    @$(文件)。就绪(函数(){
             顶栏(世界,你好!);
             });
        });,真);

查看中的链接回答因为他给出了几个选择

I am redirecting my user to my default.aspx when his session expires and default page is referenced under a master page. I show a notification like twitter stating Session Expired what happens is it works fine in firefox and google chrome but not in IE. I get Internet Explorer cannot open site-http://localhost:1335/order/Default.aspx?Sid=1 Operation aborted

I googled this and found that $(document.body).append() before the body tag was the problem if i move the script to my bottom of my page my notification doesn't work in any browser.

Here is my master page,

<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>

and my topbar function is called in my default.aspx page,

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);
  }
}

解决方案

I could not find the place where topBar is called, but if I call it from $(document).ready() it worked like a charm in my 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> 

You could also use $(window).load() if you have graphics and/or other heavy elements that needs to be loaded before topBar() is called:

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

Hope it helps.

EDIT:


Maybe this can be of some help? Basically you could do something like this:

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

Check out the answer in the link because he gives a couple of alternatives

这篇关于$(document.body的).append()似乎并不在IE工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆