2011-01-04 8 views
0

更新されたコード更新の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;" /> 
    <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> 

しかし、それは動作していないようです。これを行うには、より良い方法や少なくとも正しい方法がありますか?

+0

私のコードを更新した後、私はまだiframeをリロードしていないという問題があります。 srcリンクはそれとは何の関係もありませんか? – shinjuo

答えて

1

問題は、あなたがページを読み込んでいて、iframeではないことです。

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

OR

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

OR

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

編集:IFRAMEをリロードするには、いくつかの方法があります。これは、あなたが持っているスクリプト内の部品を交換する必要があります:location.reload();

関連する質問を見つけることができます別のサイトhereにある。

また、読み込んでいるページがキャッシュされていないこと、またはページが最初に読み込まれたときと同じ状態を維持しているように見えることがあります。

+0

これはiframeで何の動作もしません。 – shinjuo

+0

@ shinjuo - あなたは既にiframeのonmouseoverでそれを持っています。 Aaronが以下に述べたものだけに切り替えると、(例えば)入力している場合には、まだリフレッシュされ、情報が失われるため、注意する必要があります。おそらく、あなたはそれをいくつかのイベントハンドラに付けることができます。すなわち、彼らがクリック、keypress、mouseover、mousemoveなどであれば、タイマーをリセットして、その中で何かをしている間にリフレッシュしないようにする必要があります。 iframeでぼかし/フォーカスイベントを使用できるかどうかはわかりませんが、それも検討する価値があります。 –

+0

申し訳ありませんコードの行があなたが私に渡した場所に混乱しましたが、今は見ています。また、onkeypressを追加してクリックしたい場合は、次のような別の行を追加するだけです:document.getElementById( 'openPrintRun')。onkeypress = resetTimeOut;それらをすべて取得するための行を追加してください。それを行うより効率的な方法があります。 – shinjuo

1

mousemoveイベントを使用するようにしてください(ユーザーがブラウザでマウスポインタを忘れて歩き回った場合のアクティビティはありますか?)。代わりにbody要素にアタッチしてください。 iframeはそのようなイベントを送信しない可能性があります(セキュリティ:フレームの外からマウスポインタを見ることはできません)。

+0

あなたは次のように言っています:document.body.onmousemove = resetTimeOut; – shinjuo

+0

私は文法で100%確信していませんが、そうです。動作しない場合は、 'id =" debug "'で 'DIV'を作成してください。そうすれば、ブロックせずにページにデバッグ出力を表示することができます: 'document.getElementById( 'debug')。innerHtml = 'some text'' –

関連する問題