2011-07-23 14 views
6

Czy istnieje dobry artykuł lub w jaki sposób element iframe lub ramka mogą pracować asynchronicznie z każdą stroną? Mam dno/stałe div zawinięte w jquery, aby przesunąć się na zawisie z odtwarzaczem mp3. Wymieniłem gracza z ramką iframe. Radzę sobie dobrze, ale jak może grać bez odświeżania strony lub nawigacji na inną stronę? Chcę, aby była ona ustawiona u dołu każdej strony i odtwarzana ciągle bez odświeżania. Próbowałem umieścić element iframe na każdej stronie, ale to i tak nie zadziałało. Jakieś pomysły? Dziękuję Ci.ma <iframe> działa asynchronicznie

+5

Z dźwięków Twojego pytania, nie sądzę, że rozumiesz, co "asynchroniczne" oznacza – zzzzBov

+0

??? Myślę, że byłem całkiem jasny. – Graham

Odpowiedz

2

Jeśli musi pozostać w przeglądarce (nie pobierając aplikację lub odczytać strumienia w odtwarzaczu muzyki/wideo), jedynym sposobem, powinno być tak naprawdę nie zmienia stronę i ładuj zawartość, która musi się zmienić za pomocą ajaxa lub javascripta (lub sama w ramce (i)).

Ale byłoby dużo łatwiej zrobić stronę tylko z lektorem i umieścić link na swojej stronie internetowej, aby otworzyć go w innej zakładce:

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

Edit:

Więc z javascript to byłby ten sam wynik, co ajax, ale to oznacza, że ​​nie zmienia strony, jeśli chodzi o SEO, jeśli jest to trochę ważne, nie jest dobre.

Co mam na myśli przez javascript to na przykład, jeśli klikniesz na link "home" po prostu dynamicznie dodając <script type="text/javascript" src="/homepage.js"></script>, który modyfikuje zawartość strony (przy zachowaniu odtwarzacza mp3).

Otherway, może z cookie, jeśli jest to możliwe z graczowi znać javascript:

  • w wiedzy na Wich plik mp3 odtwarzacz jest
  • w czasie Wich w formacie mp3 gra gracz jest
  • iść w określonym pliku mp3
  • iść w określonym czasie w formacie mp3
  • (i jeśli to możliwe, aby wstrzymać odtwarzacza, nie powinno być w stanie wiedzieć, czy gracz jest gra lub nie)

Byłoby to możliwe podczas zmiany strony, aby uzyskać w odpowiednim czasie (ale nie będzie to czas, aby załadować stronę i odtwarzacz mp3 bez muzyki).

Albo może być odtwarzacz mp3, który może zaoszczędzić czas w którym jesteśmy, i zacząć od tej chwili na innej stronie (ale wciąż przy zmianie strony bez dźwięku na kilka sekund).

Dzięki tym metodom pojawi się również kwestia otwarcia kilku stron.

Edit:

Próbowałem drogę z treścią strony w iframe, to działa dość dobrze, ale potrzebuje MEMBRE aby przełączyć w tryb mp3.

Oto mp3.html (umieścić w folderze głównym, jeśli nie jest to możliwe, musiałaby pewne zmiany):

<!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> 

I umieścić link, który otworzy bieżącej strony w iframe, oraz ze odtwarzacz mp3, potrzebuje tylko łącza:

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

Przykład użycia tego here.

+0

Jak to zrobić z javascript? Czy możesz wskazać mi na dobry artykuł, lub jaki konkretnie aspekt javascript chciałbym konkretnie skłaniać? Dzięki. – Graham

1

Albo masz niezależnego odtwarzacza Flash/Java/Unity itp. Poza oknem przeglądarki.
Lub używasz ramek, dwóch klatek, jednej, w której pojawiają się główne strony witryny, i tej, w której znajduje się gracz.
Innym sposobem jest wykonanie całej nawigacji w witrynie (gdzie chcesz, aby odtwarzacz był ciągły) za pomocą połączeń asynchronicznych (Ajax).

Google btw korzysta IFrame/ramek

+0

Jedynym aspektem, który będzie osadzony w ramkach/elementach iframe, będzie odtwarzacz mp3; widząc, że SEO będzie nieco ważne. Tak więc problem polega bardziej na tym, że używam reg. odtwarzacz mp3 w przeciwieństwie do Flash Playera? Czy odwołanie do Flash Playera w iframe będzie działało? Ponadto powinienem użyć "ramki" lub "Iframe" tylko dla jednego div? Ok dzięki! Kinda zbombardował cię pytaniami. – Graham

Powiązane problemy