Как запустить JavaScript до System.Web.UI.Timer OnTick?
-
22-07-2019 - |
Вопрос
Мне нужен скрипт на стороне клиента, чтобы подтвердить, что событие Timer OnTick может продолжаться. Р>
Как вызвать CanContinue () до того, как произойдет обратная передача Timer1?
Как отменить обратную передачу, если пользователь выбрал Отмена?
<%@ Page Language="C#" %>
<script runat="server">
protected void Timer1_OnTick(object sender, EventArgs e)
{
Response.Write("Last Postback: " + DateTime.Now.ToString());
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Timer Test</title>
<script type="text/javascript" language="javascript">
function CanContinue() {
return confirm('The page is requesting new data. Ok or Cancel?');
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Timer ID="Timer1" runat="server" OnTick="Timer1_OnTick" Interval="300000" />
</form>
</body>
</html>
<Ч>
ПРИМЕЧАНИЕ. У некоторых читателей может возникнуть проблема с отображением модального подтверждения каждые x минут. Я бы согласился, что это плохо для юзабилити, но я не в состоянии изменить дизайн.
<Ч>ОБНОВЛЕНИЕ: Я все-таки решил не использовать таймер. См. этот пост для получения подробной информации об альтернативном решении. р>
Решение 2
Я решил не использовать таймер в конце концов. См. этот пост для получения подробной информации об альтернативном решении. р>
Другие советы
Я не знаю, есть ли способ привязать метод, сгенерированный таймером, для вызова действия сервера. Однако вы можете получить ссылку на компонент javascript и запустить / остановить или изменить интервал. Имея это в виду, вы можете сделать несколько неприятных взломов, чтобы получить желаемую функциональность.
Например:
<Ол>$find(‘<%= Timer1.ClientID %>’);
) Это не элегантное решение, но я не могу сказать, что когда-либо работал со встроенными таймерами asp.net, поэтому я не могу предложить слишком много понимания.