从固定的服务器时间启动图像交换JavaScript
start image swap javascript from fixed server time
我正在为慈善机构建立一个非常简单的移动网站,他们想在底部为当地支持企业展示自己的广告横幅。我有一个简单的Javascript,它每10秒交换一次图像横幅,以换取序列中的下一个:
window.onload = function ()
{
var rotator = document.getElementById("adBox");
var images = rotator.getElementsByTagName("img");
for (var i = 1; i < images.length; i++)
{
images[i].style.display = "none";
}
var counter = 1;
setInterval(function ()
{
for (var i = 0; i < images.length; i++)
{
images[i].style.display = "none";
}
images[counter].style.display = "block";
counter++;
if (counter == images.length)
{
counter = 0;
}
}, 7000); //1000 = 1 second
};
<body ontouchstart="">
<div id="adBox">
<img src="_/ads/1.jpg" alt="One" width="320" height="70">
<img src="_/ads/2.jpg" alt="Two" width="320" height="70">
<img src="_/ads/3.jpg" alt="Three" width="320" height="70">
<div>
</body>
但是,当您加载不同的页面时,这会重置并返回到序列的开头。我想做的是在固定的服务器时间(比如午夜)开始序列并循环播放,这样当您加载新页面时,您不会回到横幅的开头,而是转到"该服务器时间的广告"。
我认为这是最简单,最公平的广告方式。我确实考虑过使用 iFrame,但这意味着主站点必须坐在一个站点中,我相信触摸设备上对 iFrame 的支持不是很好(这将是这方面的一个主要问题)。
嗯。
听起来您甚至不需要图像来"旋转"。
像这样的事情怎么样:
Case(serverTime)
If( 00.00 -> 04.00 )[ show ad #1 ]
If( 04.01 -> 08.00 )[ show ad #2 ]
If( 08.01 -> 12.00 )[ show ad #3 ]
If( 12.01 -> 14.00 )[ show ad #4 ]
显然以上不是有效的代码,但你明白了吗?
我想了
很久你的要求,我想我有一个解决方案:
<html>
<head>
<script>
window.onload = function ()
{
var pictureArray = new Array
(
"https://www.gravatar.com/avatar/0eb8371e227b5f9993968b5f90f2a1d8?s=32&d=identicon&r=PG",
"https://www.gravatar.com/avatar/9be5d328127c377109b295b5941733fb?s=32&d=identicon&r=PG",
"https://www.gravatar.com/avatar/9e84f23bd4c8b566e466a2d4d7fc5ed4?s=32&d=identicon&r=PG"
);
var counter = 0;
var currentHour = new Date().getHours();
if (currentHour >= 8 && currentHour < 16)
{
counter = 1;
} else if (currentHour >=16 && currentHour <= 23) {
counter = 2;
}
var rotator = document.getElementById("adBox");
var images = rotator.getElementsByTagName("img");
images[0].src = pictureArray[counter];
setInterval(function ()
{
images[0].src = pictureArray[counter];
counter++;
if (counter == pictureArray.length)
{
counter = 0;
}
}
, 7000); //1000 = 1 second
};
</script>
</head>
<body ontouchstart="">
<div id="adBox">
<img src="" alt="pic" width="320" height="70">
<div>
</body>
</html>
我稍微改变了你的代码,因为在我眼里,你原来的方式是复杂。我希望这就是你想要的 - 更好的理解 - 存档。
注意:Javascript在客户端工作,因此需要本地计算机的时间。如果你想从服务器中获取时间,你必须把它放在你的HTML输出中。
相关文章:
- 在页面启动期间加载图像
- Phonegap启动屏幕图像失真
- 加载图像后启动转换事件
- 启动前导入图像
- 启动网站时,页面和图像加载速度非常慢
- 仅在加载活动类图像时启动功能 - Twitter 引导轮播
- 从固定的服务器时间启动图像交换JavaScript
- 如何在 Meteor 启动时将图像上传到服务器
- Jquery ajax,等待图像或iframe完全加载后再启动函数
- 如何在点击图像后播放/启动vimeo视频
- HTML图像地图区域触摸事件未启动
- 单击函数不在图像jQuery上启动
- 使用“停止-启动”按钮设置图像刷新间隔
- image.onload在图像完全加载之前启动
- 启动时无法加载图像
- 将鼠标悬停在缩略图上以启动新图像;悬停结束后,新图像仍然存在
- 使谷歌图像搜索启动按'输入'
- TinyMCE Moxie播放器媒体启动图像
- Windows Phone 8上未启动图像加载事件
- 启动图像库,无法显示启动控件