Плавная прокрутка и динамическое изменение заголовка страницы - PullRequest
0 голосов
/ 25 ноября 2011

У меня в настоящее время есть сайт, который меняет заголовок страницы, чтобы отразить, какая песня в данный момент воспроизводится Мне бы хотелось, чтобы заголовок страницы постоянно прокручивался, чтобы пользователь мог видеть полное название воспроизводимой песни, даже если у него открыто много вкладок.

Я опробовал несколько различных плагинов для прокрутки, но тот, который я нашел наиболее подходящим, это плагин, найденный здесь: http://www.seangw.com/wordpress/index.php/2009/01/basic-ajax-tutorial-smooth-scrolling-text-marquee-with-a-jquery-plugin/

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

Вот функция javascript, в которой я меняю заголовок:

function playNext(newState)
{
    //alert("new state: " + newState);
    //unstarted (-1), ended (0), playing (1), paused (2), buffering (3), video cued (5)
    if(newState == 0) //song is done
    {
        //**************minimize myself*******************
        var i = ' . $this->i .';
        var dataString = getDataString(i);
        minimizeSong(dataString, i);
        //**************maximize next song****************
        dataString = getDataString(i+1); //i + 1 is next song
        maximizeSong(dataString, i+1);
        //I will automatically start playing on load
    }
    else if(newState == 1) // if its playing, change the title
    {
        $("title").text("' . $this->title . ' by ' . $this->artist . '    - T3k.no");
    }
    else if(newState == 2) //song is paused, go back to original title
    {
        $("title").text("Paused - T3k.no");
    }
    else if(newState == 3) //song is buffering, change title
    {
        $("title").text("Loading '.$this->artist .' - T3k.no");
    }
}

Кто-нибудь может помочь? Как я могу добиться этого?

Это не работает:

<html><head>
<marquee behavior="scroll" direction="left" scrollamount="2"
      height="75" width="150">
    <title>WANT THIS TO SCROLL</title>
</marquee>
</head></html>

Но что-то вроде этого работает нормально:

<body>
    <marquee behavior="scroll" direction="left" scrollamount="2"
          height="75" width="150">
          <p>This is a test of a Smooth Marquee using jquery.</p>
     </marquee>
</body>

1 Ответ

2 голосов
/ 26 ноября 2011

Поместите это ваша готовая функция jQuery:

(function titleMarquee() {
 document.title = document.title.substring(1)+document.title.substring(0,1);
setTimeout(titleMarquee, 200);
})();

Плагин Marquee работает не так, как вы ожидаете, потому что для одного тега head не отображается. Его основное назначение - настройка вашей страницы и ее ресурсов. Тег marquee предназначен для визуализированных элементов страницы. Теги head и title не находятся в "нормальном потоке", как это было.

...