如何每 500 - 1000 毫秒刷新一次 div 标签?

发布于 2024-10-08 05:21:15 字数 1177 浏览 2 评论 0原文

我有这个 div ,其内容取决于 HTML 嵌入式媒体播放器的当前时间。

<div id = "myId">
<s:iterator value="timeLine.getFrameByTime('22').slide.indices">
    <a href="javascript:setCurrentTime('<s:property value="timeLine.getFrameByTime('22').slide.firstOccurence"/>')">
             <s:property value="text"/>
       </a>
</s:iterator>
</div>

数字 22 是硬编码的。应该是下面函数的返回值。

JavaScript 代码:

function getCurrentTime() {
    return document.getElementById('video').controls.currentPositionString;
}

function setCurrentTime(time) { 
    document.getElementById('video').controls.currentPosition = parseFloat(time);
}

上面的 div 应每 500 毫秒刷新一次。我不认为 AJAX 和 JSON 是解决方案,因为那样服务器会超载。

有没有办法从 JavaScript (jQuery) while 循环刷新睡眠 500 - 1000 毫秒的 div

编辑:我所说的刷新是指,该 div 的内容应该更改。我知道我的媒体播放器的当前时间,并且我知道特定时间输入的内容是什么。现在我需要一种机制来询问我的媒体播放器的时间并更改 div 内容。

问题是:每 500 毫秒使用 AJAX 并在服务器上调用我的方法,该方法为我提供特定时间输入的内容,或者在页面初始化上加载整个数据并在 JavaScript 中实现逻辑,该逻辑仅根据当前时间显示该数据的一部分?

I have this div which contents depends of the current time of HTML embedded media player.

<div id = "myId">
<s:iterator value="timeLine.getFrameByTime('22').slide.indices">
    <a href="javascript:setCurrentTime('<s:property value="timeLine.getFrameByTime('22').slide.firstOccurence"/>')">
             <s:property value="text"/>
       </a>
</s:iterator>
</div>

Number 22 is hardcoded. It should be return value of function below.

JavaScript code:

function getCurrentTime() {
    return document.getElementById('video').controls.currentPositionString;
}

function setCurrentTime(time) { 
    document.getElementById('video').controls.currentPosition = parseFloat(time);
}

That div above should be refreshed for every 500ms. I don't think that AJAX and JSON is the solution because server would be overloaded then.

Is there a way to refresh that div from JavaScript (jQuery) while loop which sleeps for 500 - 1000ms?

EDIT: By refresh I mean, content of that div should be changed. I know the current time of my media player and I know what is the content for particular time input. Now I need the mechanism to ask my media player for it's time and change the div content.

The question is: Use AJAX for every 500ms and call my method on server which gives me contents for particular time input or load the whole data on page initialize and implement logic in JavaScript which shows only the part of that data depending on current time?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

最好是你 2024-10-15 05:21:15

您可以使用 Jquery SetInterval 函数来实现此目的...

setInterval(function() {
      // Do something every 5 seconds
}, 5000);

这可用于使用客户端缓存中的内容刷新 div 或发送服务器请求以检索数据以刷新 div。

You can use Jquery SetInterval Function for this purpose...

setInterval(function() {
      // Do something every 5 seconds
}, 5000);

This can be used to either refresh the div with contents from client side cache or to send server requests to retrieve data to refresh the div.

回忆躺在深渊里 2024-10-15 05:21:15

您必须使用

吗?如果您可以改用 ,则解决方案会更简单并且可以使用 HTML 功能。这个 stackoverflow 答案 描述了如何使用 < ;meta> 标签每 X 秒自动刷新一次。

Do you have to use a <div>? If you can use an <iframe> instead, the solution is simpler and can use HTML features. This stackoverflow answer describes how to use a <meta> tag to refresh automatically every X seconds.

靑春怀旧 2024-10-15 05:21:15

如果可能的话,我建议你将时间线数据的所有内容输出到javascript。

var timeLineIndices = [ 'value1', 'value2', 'value3' ];
var getFrameSlideIndicesByTime = function(time){
    return timeLineIndices[time];
}

通过 javascript 在客户端有效实现 timeLine.getFrameByTime('22').slide.indices 。

如果输出所有帧数​​据太大,请考虑仅根据 500 - 1000ms 间隔输出帧。

I would suggest you output all content of your timeLine data to javascript, if possible.

var timeLineIndices = [ 'value1', 'value2', 'value3' ];
var getFrameSlideIndicesByTime = function(time){
    return timeLineIndices[time];
}

Effectively implementing timeLine.getFrameByTime('22').slide.indices at client side by javascript.

If outputing all frames data is too large, consider output only the frames according to your 500 - 1000ms interval.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文