完成計時器的暫停和繼續
今天完成了一個報警彈窗功能的修改,因為功能是使用定時器進行ajax請求獲取資料的,定時器定時請求會造成頁面的閃爍,請求到一定時間頁面請求速度變快(未解決),所以利用彈窗彈出的時候關閉定時器,彈窗關閉的時候再重新開啟定時器,由於定時器多個頁面都要使用,所以統一在layout中寫入。彈出視窗和關閉視窗是兩個不同的方法,利用變數不宣告直接使用的方式來獲取定時器控制代碼
//關閉彈窗 function ClosePopup(i, num) { $(".FloorGiveInfoClose_" + i).remove(); document.getElementById("sound").src = ""; $.post("/ALAPerimeterRecord/UpdateAlarmState", { DeviceNumber: num }, function (res) { }) Timer = setInterval('BiogasConcentration()', 3000); }
下面是定時器請求
` //沼氣達到一定條件報警
var Timer = setInterval('BiogasConcentration()', 3000);
function BiogasConcentration() {
var data = {
}
$.ajax({
type: "POST",
url: "/ALAPerimeterRecord/BiogasConcentration?r=" + Math.random(),
data: data,
//result獲取的事json字串
success: function (result) {
if (result == "") {
return;
}
var obj = JSON.parse(result);
if (obj.length > 0) {
document.getElementById("sound").src = "../../audio/純音樂%20-%20消防警報聲.mp3";
for (var i = 0; i < obj.length; i++) {
$("#VidelDivHtml").css("display", "none");
var text = '<div class="body_window FloorGiveInfoClose_' + i + '" style=" display:block;">' + '<div>' + '<div class="window_title">' + '告警資訊' + // '<img src="../../img/home/on_window.png" onclick="AlarmWaterRecord(' + i + ',' + obj[i].Area + ')" alt="">' + ' </div>' + '<div class="window_div">' + ' <div class="window_div_top1">' + ' <img src="../../img/home/logo_window.png" alt="">' + ' <div>' + ' <div>【沼氣濃度報警】' + obj[i].DeviceName + ' ' + (obj[i].DeviceCode == 1 ? "" : ':沼氣濃度:' + obj[i].DeviceValue + '') + '</div>' + ' <div>時間:' + obj[i].CreateTime + '</div>' + ' </div>' + ' </div>' + ' <div class="window_button">' + ' <div>' + ' <div class="button_1" onclick="ClosePopup(' + i + ',' + 1 + ')">' + ' 確認並關閉' + ' </div>' + ' </div>' + ' </div>' + ' </div>' + ' </div>' + '</div>'; $("#FloorGiveInfoClose").append(text); console.log($("#sound").attr("src")); if ($("#sound").attr("src") != "") { clearTimeout(Timer) } setTimeout("ClosePopup(" + (i) + ",'" + obj[i].Area + "')", 30000); } } } }) }
`