1

JS を使用して Web ページのドキュメント タイトルを回転させたいと考えています。たとえば、次のようになります。

Domain.com に移動Domain.comしてNew Messgae - Domain.comから再び Domain.com に戻るなど、Facebook がチャットを使用して新しいメッセージを処理する方法と非常によく似ています。

SetInterval の使用を検討しましたが、例外は 1 つの式だけですか? これを変更することは可能ですか、または SetInterval を使用するのに間違った関数を使用していますか?

$(document).ready(function () {

    setInterval(function () {
            $(document).attr('title', 'New Message — Domain.com');
        },
        2000);

});
4

4 に答える 4

3
$(document).ready(function() {
        var titles=['title1','title2','title3'];

        setInterval(function()
        {     
              $(document).attr('title', titles[0]);
              titles.push(titles.shift());
        },
        2000);

    });
于 2010-11-25T17:11:55.687 に答える
1

現在、2秒ごとに同じ新しいタイトルを設定し続けています。つまり、最初の変更後に変更は表示されません。古いタイトルを保存し、2つの状態を交互に切り替えて、古いタイトルと新しいタイトルを表示する必要があります。

var oldTitle, timerId;

function flashTitle(newTitle) {
  var state = false;
  oldTitle = document.title;  // save old title
  timerId = setInterval(flash, 2000);

  function flash() {
    // switch between old and new titles
    document.title = state ? oldTitle : newTitle;
    state = !state;
  }
}

function clearFlash() {
  clearInterval(timerId);
  document.title = oldTitle; // restore old title
}
于 2010-11-25T17:13:15.763 に答える
1

まあ、JavaScript ライブラリを使わずにそれを行うことができます...

var title = document.getElementsByTagName('title');
var msg1 = "Domain.com";
var msg2 = "New Message - Domain.com"
var current;
var titleChange;

function changeTitle(){
  if(current == msg1){
   title = msg2;
   current = msg2;
  }else{ //If the current title isn't equal to the value of msg1
   title = msg1;
   current = msg1;
  }
 titleChange = setTimeout("changeTitle()", 1000);
}

function stopChangingTitle(){
 clearTimeout(titleChange);
 title = msg1;
}

上記のコードが動作することは保証できませんが、動作するはずです!

于 2010-11-25T17:05:15.353 に答える
0

これは、Dr.Molle のソリューションを使用して思いついたものです。

function changeTitle (mytitle,count) {
    console.log(title_change);
    console.log(count);
    if (count >= 1) {
        var titles = [$('title').attr('data-title'),mytitle];
        title_change = setInterval(function(){     
             $(document).attr('title', titles[0]);
            titles.push(titles.shift());
        },
        1000);


    } else {
        clearInterval(title_change);
        //clearTimeout(title_change);
        title_change = false;
    }

        return false;

}

ただし、関数の外部で title_change を宣言したときに、setInterval を取得して循環を停止できないように見えることがわかりました。カウントが >= 1 になるとプロセスが開始されますが、0 として戻ってくると、clearInterval と clearTimeout は change_loop を停止しませんでした。

于 2014-03-06T02:43:00.973 に答える