$(document.body).append() не работает в IE
Я перенаправляю моего пользователя в файл default.aspx, когда его сеанс истекает, а на страницу по умолчанию ссылаются под главной страницей. Я показываю уведомление как твиттер с указанием Session Expired
Что происходит, это нормально работает в Firefox и Google Chrome, но не в IE. я получил Internet Explorer cannot open site-http://localhost:1335/order/Default.aspx?Sid=1 Operation aborted
Я гуглил это и обнаружил, что $(document.body).append()
до того, как тег body стал проблемой, если я переместил скрипт в нижнюю часть своей страницы, мое уведомление не работает ни в одном браузере.
Вот моя главная страница,
<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);
}
}
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);
Проверьте ответ в ссылке, потому что он дает пару альтернатив