投稿された可能性のある新しいコンテンツがあるかどうかを4秒ごとにデータベースに問い合わせるはずのこの機能があります。私はリターンを取って、サーバーから戻ってきたものから作られた動的なhtmlでフィードをリフレッシュします。これはすべて素晴らしいです。Clear APIの呼び出しでClearIntervalが機能しません(ただし、ときどきのみ)
私の問題は、htmlの一部として、コンテンツの一部をスライドさせて、そのコンテンツとは異なる削除、コピー、コメントなどのオプションを与えることができるオプショントレイがあることです。彼らがトレイを飛ばしたときに、間隔タイマーをクリアして、フィード内のhtmlをリフレッシュしないようにします(トレイを外す)。
他の問題は、ユーザはので、私はそれをすべてを処理するために、この機能を思い付い同時に開いて、複数のトレイを持つことができるということです。
function setTimers(status)
{
var timerGetContent = null;
if(status == "login")
{
tray_count = 0;
timerGetContent = null;
timerGetContent = setInterval(getContent,4000);
alert("inside login");
}
else if(status == "negitive")
{
tray_count--;
if(tray_count == 0 && timerGetContent == null)
{
timerGetContent = setInterval(getRecentContent,4000);
alert("inside negitive");
}
}
else if(status == "positive")
{
tray_count++;
clearInterval(timerGetContent);
timerGetContent = null;
alert("inside positive")
}
}
ので、ユーザが飛び出すためにボタンを押したときトレイにはsetTimer
が呼び出され、それ以外の操作を行う前に正の値を渡してから、トレイを閉じるためにボタンを押したときにsetTimer
と呼び、無視します。私はコールがうまく動作し、正しいパラメータが渡されていることを知っていますが、何が押されているかによって関数の右部分に入ることさえ知っていますが、間隔がクリアされず、私がやります。これを何時間も働いていて、まったく困惑しています。
編集: var timerGetContent
をグローバル変数として機能外にしようとしました。これには同じ問題がありました。
EDIT2:setTimers
関数を呼び出す 機能:この関数は、ポップアップしている間に
function slide_out(event)
{
clicked_element = document.getElementById(event.srcElement.id);
var re_clicked = new RegExp(clicked_element.className, "g");
if(clicked_element.className == "options-bar slide-out")
{
BACKGROUND.setTimers("positive");
clicked_element.className = clicked_element.className.replace(re_clicked, '');
clicked_element.className += "options-bar slide-out open";
}
else
{
clicked_element.className = clicked_element.className.replace(re_clicked, '');
clicked_element.className += "options-bar slide-out";
BACKGROUND.setTimers("negitive");
}
もうひとつ、setTimers
機能が拡張の背景ファイルです。
応答のおかげで、私は関数の外でtimerGetContentを移動し、グローバルにして、私はまた、 "ログイン"内の間隔をクリアし、いくつかの不規則な振る舞いを助けたが、私の問題は今、スレッドを一度に選択し、サーバーコールの実行を開始するとボタンをクリックすると、サーバーコールがテーブルをリフレッシュし、トレイが離れてトレイカウントが下がるようになります。ユーザーは、setTimersの "login"ロジックに入る何かをクリックするまで自動リフレッシュを停止します。 – Ryan