JavaScript setInterval for 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。它不会继续。我有一个外部网址。请在移动设备中打开 url 并查看问题。http://fundoophoto.com/raman/Test/

Opera Mini 实际上并不执行 javascript:

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

您应该阅读有关此功能的此页面:https://dev.opera.com/articles/opera-mini-and-javascript,特别是有关setIntervalsetTimeout函数的部分

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

这对移动浏览器来说是一件特殊的事情。正如我在这里读到的那样,它意味着快速有效。因此,如果您的脚本花费大量时间,它会被浏览器本身中断。这是迷你歌剧的一个特点。

我认为当您调用床上编号时,DOM 没有完全加载。尝试将其包装在 DOM 就绪事件侦听器中。

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

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

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

最新更新