您好我想做以下事情:
使用JavaScript在浏览器处于非活动状态时停止更新面板“更新”,并在其再次处于活动状态时重新启动。我在看:Inacivity with JavaScript。我希望我能用它来完成我想要的东西;有人能指出我正确的方向吗?非常感谢你!
[编辑] 我正在使用Timer进行更新,所以如果我能以某种方式从JavaScript中禁用Timer,我想我可以这样做。
答案 0 :(得分:0)
我建议您阅读本书: http://oreilly.com/catalog/9780596527471/。它告诉您有关ASP.NET AJAX UpdatePanel控件的所有信息。有关API文档,请访问: http://msdn.microsoft.com/nb-no/library/bb311028(en-us).aspx。
答案 1 :(得分:0)
利用当前窗口对象的'mousemove'事件是什么? 如果移动了鼠标,请将计时器设置为1分钟左右,然后停用事件。 使用setInterval()重复此循环。
如果用户暂停了一段时间,这也会有所帮助。
答案 2 :(得分:0)
在头部事件
中添加此脚本<script type ="text/javascript">
var timerEnabled = true;
function ToggleTimer(btn, timerID)
{
// Toggle the timer enabled state
timerEnabled = !timerEnabled;
// Get a reference to the Timer
var timer = $find(timerID);
if (timerEnabled)
{
btn.value = 'Pause';
// Start timer
timer._startTimer();
}
else
{
btn.value = 'Resume';
// Stop timer
timer._stopTimer();
}
}
</script>
在更新面板中添加一个asp.net标签控件以进行测试
<asp:Label Id="Label1" Text="" runat="server" />
在更新面板外添加一个html按钮
<input type="button" id="btntimercontroller" value="Pause" onclick="return ToggleTimer(btntimercontroller, '<%= ajaxtimer.ClientID%>');" />
检查计时器是否停止在aspx.cs文件中添加此代码
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToLongTimeString();
}
只是省略脚本中的(“)标记,因为它会导致错误......
答案 3 :(得分:0)
window.blur = function() { stopTimer() }
window.focus = function() { startTimer() }
浏览器兼容性可能适用。希望这会有所帮助。
答案 4 :(得分:0)
我在这里找到了一个潜在的解决方案:http://www.thefutureoftheweb.com/blog/detect-browser-window-focus
我现在只有IE8进行测试,这有几个问题。首先,单击页面上的各个元素将触发focusin
事件,因此您需要一种方法来检查计时器是否已在运行。这不是太难。当你点击时,ie8也会触发focusout
事件,因此我们必须延迟实际的计时器停止以确保窗口实际上没有焦点。幸运的是,当你点击页面时,ie8似乎总是在focusin
之后立即触发focusout
,因此我们可以在focusin
处理程序上取消待定的计时器关闭。
我认为这应该与工作解决方案非常接近。 (改编自链接)
// indicates if your refresh timer is running
var updatePanelTimerRunning = true;
// timer id for shutdown procedure
var killTimerID = -1;
function stopTimer(e) {
// prepare to shutdown
if (updatePanelTimerRunning && killTimerID == -1) {
killTimerID = setTimeout(timerShutdown, 1000);
}
}
function startTimer(e) {
// cancel pending timer shutdown
clearTimeout(killTimerID);
killTimerID = -1;
if (!updatePanelTimerRunning) {
// TODO start the update panel refresh timer here
updatePanelTimerRunning = true;
}
}
function timerShutdown() {
// TODO do actual update panel timer stopping here.
updatePanelTimerRunning = false;
}
if (/*@cc_on ! @*/ false) { // check for Internet Explorer
document.attachEvent('onfocusin', startTimer);
document.attachEvent('onfocusout', stopTimer);
}
else {
// window.onfocus = stopTimer;
// window.onblur = startTimer;
window.addEventListener('focus', startTimer, false);
window.addEventListener('blur', stopTimer, false);
}