Обновить iframe, когда нет активности пользователя - PullRequest
0 голосов
/ 04 января 2011

Обновленный код

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <meta content="text/html; charset=utf-8;" http-equiv="Content-Type;" />
    <meta http-equiv="Cache-Control" content="no-cache" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="0" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
    <script type="text/javascript">
     //This goes into a script tag in your head tag
     var docTimeOut;

     function bodyTimeOut() {
         docTimeOut=setTimeout("updateFrame();",10000);
     }

     function resetTimeOut() {
         //alert('reset!');
         clearTimeout(docTimeOut);
         bodyTimeOut();
     }

     function updateFrame() {
         //Loads the page's html into the div
         //Uncomment this in your actual code
         $.get('https://www.creator.zoho.com/somePage/', function(data) {
             $('openPrintRun').html(data);
         });
         //alert('update!');
     }

     //This function runs when the DOM has finished loading
     $(function() {
         bodyTimeOut();
         //This binds the resettimeOut function the click, mousemove and mouseover events of the div
         $('#openPrintRun').bind('click mousemove mouseover', resetTimeOut);
     });
        // -->
    </script>


    <title>Untitled 1</title>
    </head>

    <body>
      <div class="openPrintRun" style="height:250px; width:100%;">
      </div>
     </body>

    </html>

У меня есть iframe, который я хочу обновить, когда нет активности пользователя.На данный момент я пытаюсь использовать это:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<script type="text/javascript">
var docTimeOut;
function bodyTimeOut()
{
    docTimeOut=setTimeout(function(){location.reload();},1200);
}

function resetTimeOut()
{
    clearTimeout(docTimeOut);
    bodyTimeOut();
}


document.onload = bodyTimeOut;

document.getElementById('openPrintRun').onmouseover= resetTimeOut;
</script>
<title>Untitled 1</title>
</head>

<body>
  <iframe id="openPrintRun" height='250px' width='100%' name='zoho-Open_Print_Runs' frameborder='0' scrolling='auto' allowTransparency ='true' src='somepage.html'></iframe>  
</body>

</html>

Но, похоже, не работает.Есть ли лучший или хотя бы правильный способ сделать это?

Ответы [ 2 ]

1 голос
/ 04 января 2011

Я думаю, проблема в том, что вы перезагружаете страницу, а не фрейм.Есть несколько способов перезагрузить iframe:

document.getElementById("openPrintRun").contentDocument.location.reload();

ИЛИ

document.getElementById("openPrintRun").contentWindow.location.reload();

ИЛИ

document.getElementById("openPrintRun").src = document.getElementById("openPrintRun").src;

Редактировать : это должно заменитьчасть в вашем сценарии, где у вас есть: location.reload();

Вы можете найти связанный вопрос на другом сайте здесь .

Кроме того, убедитесь, что страница, которую вы 'повторная загрузка не кэшируется или страница может остаться такой же, какой она была при первой загрузке.

1 голос
/ 04 января 2011

Попробуйте использовать событие mousemove (есть ли активность, когда пользователь забывает указатель мыши в браузере и уходит?) И вместо этого присоедините его к элементу body.Возможно, iframe не отправляет такие события (безопасность: поэтому вы не можете наблюдать за указателем мыши за пределами кадра).

...