javascript - How to avoid flicker while refreshing iframe? - Stack Overflow

First of all, even if my question is about how to refresh <iframe>'s without flickering, any

First of all, even if my question is about how to refresh <iframe>'s without flickering, any other suggestions that would solve my problem will be wele.

Problem: I have a server that publishes a "main" html page. Meanwhile, it takes pictures (say, one per second) and saves them on the HDD. I want the picture to be displayed on the web page and be refreshed.

Solution found: I use a <iframe></iframe> scope where I put another page that contains only the image. Then this second page is refreshed periodically. So, the entire page is not refreshed, only the image frame. The problem is that this solution suffers from a flickering that occurs each time it is refreshed.

Here is the code of the main page (a little pacted):

<!DOCTYPE html><html><head><title>Blabla</title></head>
<body bgcolor="#404040"><h1>WELCOME!...</h1><hr>
<table border="0"><tr height="480"><td width="640">

<!-- RIGHT HERE! -->
<iframe src="image.html" width="640" height="480" frameborder="0"></iframe>

</td></tr></table>
</body></html>

and the second web page is like this:

<!DOCTYPE html><html><head>
<script type="text/javascript">
<!--
function f( t )
{
    setTimeout( "location.reload( true );", t );
}
-->
</script>
</head>
<body bgcolor="#000000" onload="JavaScript:f( 1000 );">
<img src="../images/myimage.png" alt="Erreur" height="100%" width="100%"/>
</body>
</html>

I'm a beginner in JavaScript, so I don't pretend this piece of code is good, even passable. Feel free to give me some advice.

Now, is it possible to reload without flickering? I read that the flickers occur while the page is not entirely loaded. I also read about hidden frames switched on and off during load time, etc. But I cannot find a good solution.

Also, I know that some technologies like AJAX exist but I don't know a lot more about them. Feel free to suggest me to use them if it is necessary, I can learn quickly...


EDIT 1: Most Android browsers don't support relative image size like in my example. Use absolute pixel values in place.

First of all, even if my question is about how to refresh <iframe>'s without flickering, any other suggestions that would solve my problem will be wele.

Problem: I have a server that publishes a "main" html page. Meanwhile, it takes pictures (say, one per second) and saves them on the HDD. I want the picture to be displayed on the web page and be refreshed.

Solution found: I use a <iframe></iframe> scope where I put another page that contains only the image. Then this second page is refreshed periodically. So, the entire page is not refreshed, only the image frame. The problem is that this solution suffers from a flickering that occurs each time it is refreshed.

Here is the code of the main page (a little pacted):

<!DOCTYPE html><html><head><title>Blabla</title></head>
<body bgcolor="#404040"><h1>WELCOME!...</h1><hr>
<table border="0"><tr height="480"><td width="640">

<!-- RIGHT HERE! -->
<iframe src="image.html" width="640" height="480" frameborder="0"></iframe>

</td></tr></table>
</body></html>

and the second web page is like this:

<!DOCTYPE html><html><head>
<script type="text/javascript">
<!--
function f( t )
{
    setTimeout( "location.reload( true );", t );
}
-->
</script>
</head>
<body bgcolor="#000000" onload="JavaScript:f( 1000 );">
<img src="../images/myimage.png" alt="Erreur" height="100%" width="100%"/>
</body>
</html>

I'm a beginner in JavaScript, so I don't pretend this piece of code is good, even passable. Feel free to give me some advice.

Now, is it possible to reload without flickering? I read that the flickers occur while the page is not entirely loaded. I also read about hidden frames switched on and off during load time, etc. But I cannot find a good solution.

Also, I know that some technologies like AJAX exist but I don't know a lot more about them. Feel free to suggest me to use them if it is necessary, I can learn quickly...


EDIT 1: Most Android browsers don't support relative image size like in my example. Use absolute pixel values in place.

Share edited Nov 12, 2013 at 5:02 dom_beau asked Nov 12, 2013 at 2:46 dom_beaudom_beau 2,5173 gold badges35 silver badges61 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 5

Reloading an iframe will always flicker. But you don't need ajax for this either, just a timer and a trick to avoid caching:

<!DOCTYPE html><html><head><title>Blabla</title></head>
<body bgcolor="#404040"><h1>WELCOME!...</h1><hr>
<table border="0"><tr height="480"><td width="640">

<div>
    <img id="theimg" src="../images/myimage.png" alt="Erreur" height="100%" width="100%"/>
</div>

</td></tr></table>

<script type="text/javascript">
var theimg = document.getElementById("theimg");
var theurl = "../images/myimage.png";
setInterval(function() {
    theimg.src = theurl + '?t=' + new Date().getTime();
}, 1000);
</script>
</body></html>

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744818973a4595498.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信