如何在Jquery中的后台运行代码块

时间:2014-03-20 06:36:44

标签: javascript jquery jquery-mobile cordova

我正在使用Jquery Mobile和PhoneGap构建移动应用程序。我正在使用单页模型,我有类似index.html,login.html等的东西

我编写了一个javascript,每隔5分钟就会使用setInterval()与服务器端联系以获取新邮件,并且所有邮件都能在后台运行良好,而不会干扰用户正在做的事情。

我想问一下是否可以在全局范围内声明并运行这段代码,而不必在每个html页面中重新声明它。

注意:我在jQuery Mobile的链接中使用rel="external",这会导致每个页面在用户导航到页面时刷新。

5 个答案:

答案 0 :(得分:0)

我相信你主要担心的是当另一个脚本被加载时它会覆盖前一个计时器,所以如果剩下一分钟直到下一次调用,现在有5个。为了克服这个障碍你可以为你添加一种逻辑间隔以便在一天中的特定时间运行,例如9.00,9.05,9.10 ......这样,每次执行脚本时都应该清除InterInterval并重置它,以便下次执行代码时计算标准时间针对浏览器的日期时间。

答案 1 :(得分:0)

我想你可以使用web worker来实现这个目的,它们可以在全局环境中独立工作,就像线程一样,它们非常高效,甚至可以让你执行I / O.

请检查此链接,希望这可以帮助您

https://developer.mozilla.org/en-US/docs/Web/Guide/Performance/Using_web_workers

https://groups.google.com/forum/#!topic/phonegap/SMMEwYXUjCU

答案 2 :(得分:0)

如果在项目中使用MVC的概念,那将更加可行。尝试创建其他类使用的基类。您也可以使用jquery widget的概念

答案 3 :(得分:0)

我认为这应该有用......

  1. 创建一个页面(母版页),其唯一的工作就是运行计时器......
  2. 在母版页上添加iframe(设置为100%可见性)并将iframe指向其他页面...
  3. 这将是什么,每当你的一个页面(在iframe中)回发时,主页面将被保存在内存中并且计时器将不会被重新加载......

    示例页。

    <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>
    

答案 4 :(得分:0)

我能够使用Android后台服务来实现我想要的目标。我在PhoneGap上使用了一个插件。对于那些想要使用类似技术的人,您可以在phonegap-service-tutorial-part-1

上获取有关该插件的信息