2010-08-19 6 views
0

Я перенаправляю моего пользователя на свой 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() до того, как тег тела был проблемой, если я переведу скрипт в свою нижнюю часть моей страницы, мое уведомление не работает в любом браузере.

Вот моя главная страница,

<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' называется? – casablanca

+0

@casablanca Я обновил свой вопрос. –

+0

Я не знаком с ASP.NET. Можете ли вы посмотреть на сгенерированный источник страницы и посмотреть, где функция фактически вызвана? Может случиться так, что его называют слишком ранним, т. Е. До анализа тела. – casablanca

ответ

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

Надеется, что это помогает.

EDIT:


Может быть this может иметь некоторую помощь? В принципе вы могли бы сделать что-то вроде этого:

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

Отъезд answer в ссылке, потому что он дает несколько альтернатив

+0

Я ответил, прежде чем было сделано редактирование о том, где была вызвана функция, так как я только что был исследован, чтобы иметь возможность обновить свой ответ. Я получаю голос без голосования. Полагаю, что он не отвечает на вопрос, как сейчас, но с информацией, которую я дал в то время, я думаю, что это правильный ответ. –

+0

Я отредактировал вопрос 4 минуты, прежде чем вы отправили этот ответ –

+0

Возможно, мой ввод не самый быстрый, и мне нужно было проверить результат? Во всяком случае, никаких тяжелых чувств. Я обновил свой ответ, надеюсь, вам это поможет. –

 Смежные вопросы

  • Нет связанных вопросов^_^