Javascript 如何在Jquery中在后台运行代码块
我正在使用Jquery Mobile和PhoneGap构建一个移动应用程序。我使用的是单页模型,其中有index.html、login.html等 我已经编写了一个javascript,它总是使用Javascript 如何在Jquery中在后台运行代码块,javascript,jquery,jquery-mobile,cordova,Javascript,Jquery,Jquery Mobile,Cordova,我正在使用Jquery Mobile和PhoneGap构建一个移动应用程序。我使用的是单页模型,其中有index.html、login.html等 我已经编写了一个javascript,它总是使用setInterval()每隔5分钟联系服务器端获取新消息,并且在后台运行良好,不会干扰用户的操作 我想问一下,是否可以在全局范围内声明和运行这段代码,而不必在每个html页面中重新声明它 注意:我在jQuery Mobile中的链接中使用了rel=“external”,当用户导航到某个页面时,该链接会
setInterval()
每隔5分钟联系服务器端获取新消息,并且在后台运行良好,不会干扰用户的操作
我想问一下,是否可以在全局范围内声明和运行这段代码,而不必在每个html页面中重新声明它
注意:我在jQuery Mobile中的链接中使用了
rel=“external”
,当用户导航到某个页面时,该链接会导致每个页面刷新。我认为您主要关心的是,当加载另一个脚本时,它会覆盖上一个计时器,因此,如果距离下一次调用还有一分钟,现在有5分钟。为了克服这个障碍,你可以在你的间歇时间中加入一种逻辑,以便在一天中的特定时间跑步,例如9.00、9.05、9.10。。。通过这种方式,您应该在每次执行脚本时清除间隔并将其重置,以便下次执行代码时是根据浏览器日期时间计算的标准时间。我想您可以使用web workers实现此目的,它们在全局上下文中独立工作,就像线程一样,它们非常高效,甚至可以执行I/O
请查看此链接,希望对您有所帮助
如果您在项目中使用
MVC
的概念,这将更加可行。尝试创建一个被其他类使用的基类。您也可以使用jquerywidget
的概念我认为这应该是可行的
<html>
<head>
<script>
function checkMessages() {
// check messages here
setInterval(...);
}
</script>
</head>
<body onload="checkMessages();">
<iframe id="iframe1" src="subpage.aspx" width="100%" scrolling="auto" frameborder="no" marginheight="0" marginwidth="0" height="100%"></iframe>
</body>
</html>
函数checkMessages(){
//在这里查看消息
设定间隔(…);
}
我能够使用Android后台服务来实现我想要的。我使用了一个带有PhoneGap的插件。对于那些想要使用类似技术的人,您可以在上获得插件的相关信息,每个文档都必须引用您运行的脚本。如果您没有将代码放在js文件中并使用
。我似乎找不到其他解决办法了。@Michał是的,我现在也在这样做。我真正想要的是一个代码块,它可以在后台运行,而不管用户导航到哪个页面。那么,我恐怕这是使用多页面系统的唯一解决方案。每次重新加载页面时,JavaScript也是如此。当您使用rel=external
导航到不同的HTML文件时,页面将完全重新加载,因此,setInterval()
将重置。如果您通过Ajax加载页面(w/orel=external
)setInterval()
将继续在后台运行。是的,我需要设置rel=“external”,因为我在页面中嵌入了自定义CSS样式,并且没有完整的页面重新加载,该样式将无法实现。我想您在这里有什么想法,我将考虑这一点,我已经检查了,而且似乎每当我从一个页面移动到另一个页面,它停止执行,我以前没有在iQuery中使用iFrAME,这是可能的吗?所有的现代浏览器都支持iFrAMES(包括)…