$(document.body).append() 在 IE 中似乎不起作用 [英] $(document.body).append() doesn't seem to work in IE
问题描述
当我的用户会话过期并且在母版页下引用默认页面时,我将他的用户重定向到我的 default.aspx.我显示了一条通知,如 twitter 说明 Session Expired
发生的情况是它在 firefox 和 google chrome 中工作正常,但在 IE 中却没有.我得到 Internet Explorer 无法打开站点-http://localhost:1335/order/Default.aspx?Sid=1 Operation aborted
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
我用谷歌搜索了这个,发现 $(document.body).append()
在 body 标记之前是问题,如果我将脚本移到我的页面底部我的通知不起作用在任何浏览器中.
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.
这是我的母版页,
<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>
并且在我的 default.aspx 页面中调用了我的 topbar 函数,
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);
}
}
推荐答案
我找不到调用 topBar
的地方,但是如果我从 $(document).ready 调用它()
它在我的 IE8 中就像一个魅力:
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>
如果您有图形和/或其他需要在调用 topBar()
之前加载的重元素,您也可以使用 $(window).load()
:
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!");
});
希望有帮助.
也许这个有帮助吗?基本上你可以做这样的事情:
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屋!