我在网站上使用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/
答案 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,特别是关于setInterval
和setTimeout
功能的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函数,因此设计为在执行前等待一段时间的脚本将无法执行