用于opera mini和其他移动浏览器的JavaScript setInterval

时间:2014-12-26 04:46:52

标签: javascript html mobile opera-mini

我在网站上使用setInterval功能遇到问题。我在下面的代码的一小部分。我基本上试图将计数增加1并将其打印在屏幕上。

<div id="test"></div>

<script>

var count = 0;
setInterval(function() {
    document.getElementById('test').innerHTML=count;
    count++;
}, 1000);


</script>  

修改:我没有在代码中使用jquery,因为它应该从上面非常清楚。但是,我在这里面临的问题是当我在移动设备中打开 opera mini 中的html时,它显示的计数是 1到3 1至4 。它不会继续下去。我有一个外部网址。请在移动设备中打开网址并查看问题。 http://fundoophoto.com/raman/Test/

4 个答案:

答案 0 :(得分:3)

Opera Mini实际上并不执行javascript:

  

它通过使用基于代理的架构来实现。来自用户手机的请求在前往Opera的转码服务器的途中通过运营商的互联网网关。然后,这些服务器将请求转发给服务器。   Opera Mini请求通过Opera的服务器   服务器正常发送响应 - 当Opera转码服务器收到响应时,它们解析标记和样式,执行JavaScript,并将数据转码为Opera二进制标记语言(OBML)。 Opera Mini会在用户设备上逐步加载此OBML数据。可以将其视为文档状态的交互式快照,其形式类似于PDF。

您应该阅读此页面有关此功能的信息:https://dev.opera.com/articles/opera-mini-and-javascript,特别是关于setIntervalsetTimeout功能的this section

  

这意味着如果使用setInterval来调用一个函数,它将被调用最多n次,其中n是超时除以间隔的商。如果间隔为1000毫秒,则在整个脚本暂停(5000÷1000 = 5)之前,该函数最多将执行五次(在较新版本的Opera Mini中)。如果间隔为5000毫秒,则在暂停之前执行的时间不会超过一次。

答案 1 :(得分:1)

这是移动浏览器的一个特例。当我读到here时,它意味着快速有效。因此,如果您的脚本花费很多时间,它会被浏览器本身中断。这是opera mini的一个特色。

答案 2 :(得分:0)

我认为当你的onbeddingnumbering调用时,DOM没有完全加载。尝试将其包装在DOM ready事件监听器中。

  var count = 0;
  document.addEventListener("DOMContentLoaded", function(event) {
setInterval(function() {
    document.getElementById('test').innerHTML=count;
    count++;
}, 1000);
  });

答案 3 :(得分:0)

在Opera Mini中浏览网页时,JavaScript由代理服务器(歌剧服务器)处理,仅在设备上呈现

在将页面发送到移动设备之前,将触发其onLoad事件,并且允许所有脚本最多执行两秒钟。 禁用了setInterval和setTimeout函数,因此设计为在执行前等待一段时间的脚本将无法执行