Bryian Tan
Вот вам пример.
1. оберните таймер в панель обновления
2. не отключайте таймер на уровне элементов
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Enabled="true" Interval="10"></asp:Timer>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
<iframe id="taskpage" src="http://www.c-sharpcorner.com/blogs/start-stop-asp-net-timer-control-using-javascript1" >
<p>Your browser does not support iframes.</p>
</iframe>
3. При загрузке страницы остановите таймер
4. После загрузки iframe запустите таймер. Вам нужно протестировать код, чтобы определить, полностью ли загружен iframe для кроссбраузерной совместимости
<script>
$(document).ready(function () {
//stop the time
var timer = $find('<%= Timer1.ClientID %>');
timer._stopTimer();
});
$('#taskpage').on('load', function () {
var timer = $find('<%= Timer1.ClientID %>');
//starts the timer:
timer._startTimer();
});
</script>
Обновляйте метку каждый раз, когда тикает таймер
protected void Timer1_Tick(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString("yyyy/MM/dd/ HH:mm:ss");
}
Member 8057273
Таймер начинает работать, когда страница загружается независимо от состояния iframe, и отладка консоли говорит:
Uncaught TypeError: Cannot read property '_stopTimer' of null
at HTMLDocument.<anonymous> (tasklist.aspx:24)
at c (jquery.min.js:3)
at Object.fireWith [as resolveWith] (jquery.min.js:3)
at Function.ready (jquery.min.js:3)
at HTMLDocument.H (jquery.min.js:3)
(anonymous) @ tasklist.aspx:24
c @ jquery.min.js:3
fireWith @ jquery.min.js:3
ready @ jquery.min.js:3
H @ jquery.min.js:3