2013-12-05 3 views
0

Я собираюсь показать Div с загружаемым изображением во время обратного просмотра страницы, чтобы сообщить пользователю о операции запуска. Я использую простую функцию javascript, которая показывает div, когда я вызываю этот JavaScript из кнопки ввода html (без обратной передачи), div появляется нормально. Но когда я использую его с помощью кнопки post-back (путем установки его свойства OnClientClick), появляется div, но без разгрузки изображения (отображается как окно с выгруженным изображением). Я не могу понять, где проблема, я даже попытался добавить изображение в виде скрытого элемента управления html, чтобы он был предварительно загружен до обратной связи, но не превалировал. Вот мой ASPX код:Изображение не появляется, когда отображается Div с загружаемым изображением во время Postbacks. ASP.net

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script type="text/javascript" language="javascript"> 
     function PleaseWait(message) { 
      message = message ? message : PleaseWaitDefaultMessage; 
      var dsoctop = document.all ? window.document.body.scrollTop : window.pageYOffset; 
      var el = document.getElementById("PleaseWaitDiv"); 
      el.style.top = (dsoctop + 100) + "px"; 
      el.style.left = "0px"; 
      el.innerHTML = "<div style='background-color:white;border: solid 0px black; width:100%;'><img src='" + WebSiteBaseURL + "Images/bigrotation2.gif' /><h3>" + message + "</h3></div>"; 
      el.style.display = ""; 
     } 
     </script> 
    <asp:Literal ID="InitLiteral" runat="server" EnableViewState="false"><script>var PleaseWaitDefaultMessage = "{0}"; var WebSiteBaseURL = "{1}"; </script> 
    </asp:Literal> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <div id="PleaseWaitDiv" style="width: 100%; position: absolute; top: 0px; display: none; 
      text-align: center; z-index: 2; max-width: 1024px; min-width: 600px; height: 260px; 
      overflow: hidden; background: #fff; margin: 0 auto; left: 0; right: 0;"> 
     </div> 
     <asp:Button ID="btnTestPleaseWait" runat="server" OnClientClick="PleaseWait();" 
      Text="Test Please wait with postback" onclick="btnTestPleaseWait_Click" 
      /> 
     <input type="button" onclick="PleaseWait();" value="Test Please wait no postback" /> 
    </div> 
    </form> 
</body> 
</html> 

и вот мой код позади:

protected void Page_Load(object sender, EventArgs e) 
    { 
     InitLiteral.Text = string.Format(InitLiteral.Text, "Please Wait.....",  Page.ResolveClientUrl("~/")); 

    } 

     protected void btnTestPleaseWait_Click(object sender, EventArgs e) 
     { 
      System.Threading.Thread.Sleep(5000); 
     } 
+0

Я думаю, что вы не pasing сообщение функции 'onclick =" PleaseWait (Процесс продолжается); " – Dotnet

+0

@Dotnet, спасибо, но если бы я не передал сообщение функции, оно примет сообщение по умолчанию : message = message? message: PleaseWaitDefaultMessage; –

+0

Я скопировал ваш код точно, за исключением того, что я закодировал URL-адрес изображения. Оно работает. Запустите Fiddler или какую-нибудь сетевую трассировку, я думаю, вы можете получить изображение 404. Что делать, если вы вставляете код Page_Load внутри if (! IsPostback)? – Crowcoder

ответ

0

У меня была такая же проблема. Я решил это, загрузив одно и то же изображение в другой тег img с атрибутом style="dispaly:none". (Do not do visible = "false")

Тег Img с дисплеем: ни один не заставляет браузер загружать изображение при загрузке страницы.

Я думаю, что проблема возникает из-за того, что запрос POST отправляется перед загрузкой div, поэтому запрос GET для IMG отправляется сразу после отправки запроса POST, а поскольку сервер занят обработкой запроса POST, требуется время для ответа, потому что из которых браузер не отображает изображение.

Надеюсь, это поможет!

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

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