0

私は1つのjQueryコードを持っています、

<script type="text/javascript">
$.idleTimeout('#idletimeout', '#idletimeout a', {
  idleAfter: 3,
  pollingInterval: 2,
  keepAliveURL: 'keepalive.php',
  serverResponseEquals: 'OK',
  onTimeout: function(){
    $(this).slideUp();
    window.location = "timeout.htm";
  },
  onIdle: function(){
    $(this).slideDown(); // show the warning bar
  },
  onCountdown: function( counter ){
    $(this).find("span").html( counter ); // update the counter
  },
  onResume: function(){
    $(this).slideUp(); // hide the warning bar
  }
});
//
</script>

これを呼ぶと、スライダーが隠れています。

function loadXMLDoc(message)
{
$.get("test1.php?data="+message, function(result){

$('#idletimeout').slideUp(); // hide
    });
}
</script>

loadXMLDoc関数でonResume関数(上部)を呼び出す方法はありますか?ありがとう。

4

1 に答える 1

3

プラグインを見ると、resume関数が、渡された2番目のパラメーター(この場合は「#idletimeouta」)のクリックハンドラーにバインドされます。タイマーを手動でリセットしたい場合は、次のことができるはずです。

$('#idletimeout a').click();

onResumeこれにより、divを上にスライドしてタイマーをリセットする機能がトリガーされます。

参考までに、プラグインのソースコードを見て、何が起こっているのかを確認しました。ここで関連部分を見ることができます。これは、resume要素(2番目のパラメーター)がクリックされたときに発生することです。

// bind continue link
this.resume.bind("click", function(e){
    e.preventDefault();

    win.clearInterval(self.countdown); // stop the countdown
    self.countdownOpen = false; // stop countdown
    self._startTimer(); // start up the timer again
    self._keepAlive( false ); // ping server
    options.onResume.call( self.warning ); // call the resume callback
}); 

直接呼び出したい場合(そしてタイマーのリセットの内部が発生しない場合)、これも行うことができます。

var idlePlugin = $.idleTimeout('#idletimeout', '#idletimeout a', { ...

idlePlugin.options.onResume.call();

ただし、これによってタイマーがリセットされることはなく、onResume関数が直接呼び出されることに注意してください。タイマーをリセットする唯一の方法は、クリックハンドラーを呼び出すことです。これは、この機能が定義されている場所だからです。

于 2012-05-05T04:31:49.443 に答える