- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 setTimeout 递归调用函数的网页。该页面还有一个 html5 短信链接(js 重定向不是 href)。当 msg 应用程序启动时,网页似乎并没有像我希望的那样继续在后台运行这些功能。我使用一个全局计数器变量来计算并在页面上显示 checkAuth 后台函数运行了多少次,当我返回页面时,这个数字并没有像我第一次进入页面时那样每 3 秒递增一次,也没有它是否像我希望的那样每 3 秒再次开始递增。在 msg 应用程序将浏览器发送到后台之前,这两个功能似乎都在运行。
即使它们不在后台运行我也同意,但是我如何让它在前台重新启动?这是我需要做的最低限度。谢谢。
//event that starts the process
$("#connect").click(function (){checkAuth();});
function checkAuth() {
//global var that counts how many times this function is called
authAttempts++;
//displays checkAuth run count on page.
$("#aa").text(authAttempts.toString());
$.get(encodeURI("myurl.aspx?phone=" + getCookie("phone") + "&ec=" + getCookie("ec") + "&authToken=" + getCookie("at") + "&uh=" + getCookie("uh") + "&mode=" + getCookie("mode")), function (data) {
$("#ajaxResults").html(data);
if ($("#authYes").length) {
var mode = getCookie("mode");
if (mode == "drv") {
window.location.replace("drv.aspx" + query);
}
else if (mode == "dsp") {
window.location.replace("dsp.aspx" + query);
}
}
else if ($("#authPending").length) {
if (++attempts >= 10) {
alert("Authentication Timed-out. Please try to connect again");
$("#link").html("");
// if this times out then force a new authentication value
// to keep the pending value from being stuck
var r = Math.random() * 1000000000;
var ri = r.toFixed(0);
var aToken = ri.toString();
$("#at").val(aToken);
setCookie("authToken", aToken, 1);
}
else {
setTimeout(checkAuth, 3000);
}
}
//must have been no good so start the authentication process
//authSent is global var to record if auth has already been sent
else if (authSent == false) {
authSent = true;
sendAuth();
}
});
}
function sendAuth() {
// generate a new token
var r = Math.random() * 1000000000;
var ri = r.toFixed(0);
var aToken = ri.toString();
$("#at").val(aToken);
setCookie("at", $("#at").val(), 1);
checkAuth();
//launch msgs app so they can send a prefilled text message
setTimeout(showMsgsApp, 500);
}
function showMsgsApp() {
window.location = "sms:19789652017&body=" + $("#at").val() + "-" + $("#ec").val() + "-" + $("#mode").val() + "-" + $("#uh").val();
}
最佳答案
你可以使用网络 worker ,即使你的页面在后台也能执行你的代码,我没有在手机上用你的案例测试过它,但它确实有效,用于执行代码,而 chrome 选项卡是开放但不活跃,因此它可能适合您的需要。
想法是使用一个 webworker 递归地运行超时,并在每次滴答时向窗口发送一条消息,窗口将监听给定的消息,并在每次收到消息时执行 checkAuth。
例子:
创建一个简单的网络 worker :worker.js
setInterval(function(){
postMessage('triggerAuth');
}, 3000)
现在在您的页面上,您应该执行 webworker,而不是创建第一个超时:
var authWorker = new Worker("worker.js");
authWorker.onmessage = function (oEvent) {
checkAuth();
};
然后确保在成功完成操作后,终止 worker。
authWorker.terminate();
原因是,当选项卡未激活时,它不会响应超时或间隔,这就是您的代码未被执行的原因。
同样,这是在不活动的浏览器选项卡上测试的,不确定它是否与您的移动示例相同。
关于javascript - 如何让递归调用的 setTimeout 函数在后台保持事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38933766/
我正在通读 Windows Phone 7.5 Unleashed,有很多代码看起来像这样(在页面的代码隐藏中): bool loaded; protected override void OnNav
在cgi服务器中,我这样返回 print ('Status: 201 Created') print ('Content-Type: text/html') print ('Location: htt
我正在查看 esh(easy shell)的实现,无法理解在这种情况下什么是 22 和 9 信号。理想情况下,有一个更具描述性的常量,但我找不到列表。 最佳答案 信号列表及其编号(包括您看到的这两个)
我的Oozie Hive Action 永远处于运行模式。 oozie.log文件中没有显示错误。
我正在编写一个使用 RFCOMM 通过蓝牙连接到设备的 Android 应用程序。我使用 BluetoothChat 示例作为建立连接的基础,大部分时间一切正常。 但是,有时由于出现套接字已打开的消息
我有一个云调度程序作业,它应该每小时访问我的 API 以更新一些价格。这些作业大约需要 80 秒才能运行。 这是它的作用: POST https://www.example.com/api/jobs/
我正在 Tomcat 上访问一个简单的 JSP 页面: 但是当我使用 curl 测试此页面时,我得到了 200 响应代码而不是预期的 202: $ curl -i "http://localhos
有时 JAR-RS 客户端会发送错误的语法请求正文。服务器应响应 HTTP status 400 (Bad Request) , 但它以 HTTP status 500 (Internal Serve
我正在尝试通过 response.send() 发送一个整数,但我不断收到此错误 express deprecated res.send(status): Use res.sendStatus(sta
我已经用 Excel 和 Java 做过很多次了……这次我需要用 Stata 来做,因为保存变量更方便'labels .如何将 dataset_1 重组为下面的 dataset_2? 我需要转换以下
我正在创建一个应用程序,其中的对象具有状态查找功能。为了提供一些上下文,让我们使用以下示例。 帮助台应用程序,其中创建作业并通过以下工作流程移动: 新 - 工作已创建但未分配 进行中 - 分配给工作人
我想在 Keras 中运行 LSTM 并获得输出和状态。在 TF 中有这样的事情 with tf.variable_scope("RNN"): for time_step in range
有谁知道 Scala-GWT 的当前状态 项目? 那里的主要作者 Grzegorz Kossakowski 似乎退出了这个项目,在 Spring 中从事 scalac 的工作。 但是,在 interv
我正在尝试编写一个 super 简单的 applescript 来启动 OneDrive App , 或确保打开,当机器的电源设置为插入时,将退出,或确保关闭,当电源设置为电池时。 我无法找到如何访问
目前我正在做这样的事情 link.on('click', function () { if (link.attr('href') !== $route.current.originalPath
是否可以仅通过查看用户代理来检测浏览器上是否启用/禁用 Javascript。 如果是,我应该寻找什么。如果否,检测用户浏览器是否启用/禁用 JavaScript 的最佳方法是什么 最佳答案 不,没有
Spring 和 OSGi 目前的开发状况如何? 最近好像有点安静了。 文档的最新版本 ( http://docs.spring.io/osgi/ ) 来自 2009 年。 我看到一些声明 Sprin
我正在从主函数为此类创建一个线程,但即使使用 Thread.currentThread().interrupt() 中断它,输出仍然包含“Still Here”行。 public class Writ
为了满足并发要求,我想知道如何在 Godog 中的多个步骤之间传递参数或状态。 func FeatureContext(s *godog.Suite) { // This step is ca
我有一个UIButton子类,它不使用UIImage背景,仅使用背景色。我注意到的一件事是,当您设置按钮的背景图像时,有一个默认的突出显示状态,当按下按钮时,该按钮会稍微变暗。 这是我当前的代码。
我是一名优秀的程序员,十分优秀!