<iframe> работают асинхронно - PullRequest
6 голосов
/ 23 июля 2011

Есть ли хорошая статья или как iframe или фрейм могут работать асинхронно с каждой страницей?У меня есть нижний / фиксированный div, завернутый в jquery, чтобы скользить вверх при наведении курсора, содержащего mp3-плеер.Я ссылался на игрока с помощью iframe.Я хорошо рендеринг, но как он может продолжать играть без перезагрузки при обновлении страницы или перехода на другую страницу?Я хочу, чтобы он был зафиксирован внизу каждой страницы и воспроизводился непрерывно без обновления.Я пытался разместить iframe на каждой странице, но это все равно не сработало.Есть идеи?Спасибо.

Ответы [ 2 ]

2 голосов
/ 23 июля 2011

Если он должен оставаться в браузере (не загружая приложение или поток чтения в музыкальном / видеоплеере), единственный способ должен состоять в том, чтобы не менять страницу и загружать контент, который должен изменяться с помощью ajax или javascript ( или поместите его в (i) рамку).

Но было бы намного проще создать страницу, содержащую только лектора, и разместить ссылку на своем веб-сайте, чтобы открыть ее в другой вкладке:

<a href="/music-player.htm" target="musicPlayer">Text or what you want</a>

Редактировать:

Так что с javascript это будет тот же результат, что и с ajax, но это означает, что не нужно менять страницу, так что для SEO, если это несколько важно, это нехорошо.

То, что я имел в виду под javascript, было, например, если вы нажали на ссылку «home», просто добавив динамически <script type="text/javascript" src="/homepage.js"></script>, который изменяет содержимое страницы (сохраняя mp3-плеер).

В противном случае, может быть, с cookie, если игрок может узнать через javascript:

  • в курсе, к какому mp3 файлу проигрыватель
  • время проигрывания mp3 плеера
  • перейти на указанный mp3-файл
  • идти в указанное время в mp3
  • (и если есть возможность приостановить игрока, должна быть возможность узнать, играет ли игрок или нет)

Это было бы возможно при смене страницы, чтобы получить в нужное время (но будет время, чтобы загрузить страницу и mp3-плеер без музыки).

Или может существовать mp3-плеер, который может сэкономить время, в котором мы находимся, и начать в это время на другой странице (но все же при смене страницы нет звука в течение нескольких секунд).

При использовании этих методов возникнет также проблема открытия нескольких страниц.

Редактировать:

Я пробовал способ с содержанием страницы в iframe, он работает довольно хорошо, но для переключения в режиме mp3 нужна мембрана.

Вот mp3.html (поместить в корневую папку, если это невозможно, потребуются некоторые изменения):

<!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" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>MP3 Player</title>
  <style type="text/css">
        html { 
        font-size: 100%; 
        } 
        body { 
            margin: 0; 
            padding: 0em;
        }
        #frame { width: 100%; height: 100%; border: none; }
        #player { position: absolute; right: 20px; bottom: 20px; }
    </style>
    <script type="text/javascript">
        if ("onhashchange" in window) {
            var h='';
            var command= false;
        window.onhashchange = function(){
                if(location.hash==h) return;
                command= true;
                window.frames['frame'].location.replace(location.hash.replace(/^#/,""));
                h= window.location.hash;
            }
        }
    </script>
</head>
<body>
    <iframe id="frame" onLoad="if(this.src=='')return;if(command)command=!1;else window.location.replace(h='#'+window.frames['frame'].location.href.replace(new RegExp('^'+document.location.origin),''));document.title=window.frames['frame'].document.title;"></iframe>
    <script type="text/javascript">
        document.getElementById("frame").src=document.location.hash.replace(/^#/,"");
    </script>
    <div id="player">
        <object type="application/x-shockwave-flash" data="http://s301826463.onlinehome.fr/so/dewplayer.swf?mp3=http://s301826463.onlinehome.fr/so/Tokyo.mp3" width="200" height="20" id="dewplayer"><param name="wmode" value="transparent"><param name="movie" value="http://s301826463.onlinehome.fr/so/dewplayer.swf?mp3=http://s301826463.onlinehome.fr/so/Tokyo.mp3"></object>
        <a href="javascript:document.location.href=document.location.hash.replace(/^#/,'')">remove mp3 player</a>
    </div>  
</body>
</html>

А чтобы поместить ссылку, открывающую текущую страницу в iframe и с mp3-плеером, нужна только ссылка:

<a href="javascript:parent.location.href='/mp3.html#'+document.location.href.replace(new RegExp('^'+document.location.origin),'')">add mp3 player</a>

Пример использования этого здесь .

1 голос
/ 23 июля 2011

Либо у вас есть независимый проигрыватель Flash / Java / Unity и т. Д. За пределами окна браузера.
Или Вы используете фреймы, два фрейма, один, где появляются главные страницы сайта, и другой, где находится игрок.
Другой способ - сделать всю навигацию на вашем сайте (где вы хотите, чтобы плеер был непрерывным) с помощью асинхронных вызовов (Ajax).

Google b.t.w использует iframes / frames

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...