Avatar billede sebster Nybegynder
14. februar 2011 - 10:56 Der er 22 kommentarer og
1 løsning

Browserfejl i Firefox & Chrome

Hej Eksperter,

Jeg sidder og laver en playliste, og ved endt video skal den redirect til næste sang. Dette fungere via javascript. Men i Firefox og chrome vil den ikke redirect med window.location. Er der et fornuftigt svar på dette?
Avatar billede jakobdo Ekspert
14. februar 2011 - 11:11 #1
Har du evt. prøvet: document.location.href
Avatar billede sebster Nybegynder
14. februar 2011 - 11:25 #2
Ja det prøvede jeg lige men uændret!

Min streg ser således ud:

window.location = '/?number=<?php $redirect_number; ?>';
Avatar billede jakobdo Ekspert
14. februar 2011 - 11:31 #3
Prøv: window.location.href = '/?number=<?=$redirect_number?>';
Avatar billede sebster Nybegynder
14. februar 2011 - 11:44 #4
Der sker desværre stadig intet!
Avatar billede jakobdo Ekspert
14. februar 2011 - 11:57 #5
Har du en side man kan se ?
Avatar billede showsource Seniormester
14. februar 2011 - 11:59 #6
Øhh, <?= er det den korte måde at bruge echo ?
Men i første ex. mangler der <?php echo $redirect_number; ?>

Og filen er selvf. gemt som en phpfil og ikke en html ? :O)
Avatar billede jakobdo Ekspert
14. februar 2011 - 12:02 #7
Showsource: Hvis man kører med short_tags i php, så er:

<?=$var?>
Det samme som:
<? echo $var ?>
Avatar billede jakobdo Ekspert
14. februar 2011 - 12:02 #8
Der skulle stå:
<?php echo $var ?>
Avatar billede sebster Nybegynder
14. februar 2011 - 12:05 #9
Ja, det er en php-fil. Siden virker fint i Safari og IE.

Jeg kører JW player hvor den embedder youtube-videoer. Jeg har så fundet et javascript som skulle klare opgaven. Det ser således ud:

<script type="text/javascript">
      var player    =  null;
      var playlist  =  null;
      function playerReady(obj)
      {
        player = gid(obj.id);
        addListeners();
      };

      function addListeners()
      {
        playlist = player.getPlaylist();

        if(playlist.length > 0)
        {
          player.addModelListener('STATE', 'stateMonitor');
        }
        else
        {
          setTimeout("addListeners();", 100);
        }
      };

      function stateMonitor(obj)
      {
        if(obj.newstate == 'COMPLETED')
        {
          //...load a new page when the media file completes playing
         
          window.location.href = '/?number=<? echo $redirect_number; ?>';
        }
      };

      function gid(name)
      {
        return document.getElementById(name);
      };
    </script>

Jeg kan ikke forstå hvorfor det ikke virker?
Avatar billede jakobdo Ekspert
14. februar 2011 - 12:15 #10
Prøv at se siden i chrome / firefox.
Står der et nummer ved den linje: window.location.href = '/?number=
Avatar billede sebster Nybegynder
14. februar 2011 - 12:18 #11
Det forstår jeg ikke hvad mener du?
Avatar billede sebster Nybegynder
14. februar 2011 - 12:34 #12
Skulle lieg læse det en ekstra gang! Når jeg ser koden, så står nummeret der! Så den skulle være god nok! Men har læst lidt om at javascript opføre sig anderledes i Firefox + Chrome! Kan det passe?
Avatar billede jakobdo Ekspert
14. februar 2011 - 12:43 #13
Ja.
Men window.location.href burde være det samme hele vejen rundt.
Avatar billede showsource Seniormester
14. februar 2011 - 12:53 #14
I FF er der en "fejlkonsol".
Den er ret nyttig når man leger med js.

Og sætter man IE til at give besked ved ALLE scriptfejl, synes jeg selv man er rimelig kørende for fejlfinding
Avatar billede sebster Nybegynder
14. februar 2011 - 13:39 #15
Er det firebug du mener? Eller er det et andet plug-in?
Avatar billede sebster Nybegynder
14. februar 2011 - 14:33 #16
Nu fik Jeg fejl konsollen til ar virke og den siger fejl ved: playlist = player.getplaylist();

Den siger player.getplaylist ikke er en funktion! Nogen ideer?
Avatar billede jakobdo Ekspert
14. februar 2011 - 14:36 #17
Det skyldes med stor sandsynlighed en fejl i din js kode.
Avatar billede sebster Nybegynder
14. februar 2011 - 14:51 #18
JA det tænkte jeg også, men er ikke den skarpeste til javascript så det er her jeg godt kunne bruge noget assistance!
Avatar billede jakobdo Ekspert
14. februar 2011 - 15:20 #19
Jeg har flere gange spurgt til en side, hvor jeg kan se noget kode.
Og uden den, kan jeg ikke fortælle fejlen.
Avatar billede sebster Nybegynder
14. februar 2011 - 15:36 #20
Jo det ville jeg egentlig gerne. Men troede at det stykke javascript jeg allerede havde postet var nok!

men ud over det har jeg følgende i min kode:

<object id="player" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" name="player" width="640" height="385">
<param name="movie" value="player/player.swf" />
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="flashvars" value="file=http://youtube.com/v/<?php echo $url; ?>&skin=player/glow.zip&autostart=true" />
<embed
type="application/x-shockwave-flash"
id="player"
name="player"
src="player/player.swf"
allowscriptaccess="always"
allowfullscreen="true"
flashvars="file=http://youtube.com/v/<?php echo $url; ?>&skin=player/glow.zip&autostart=true" width="640" height="385" />
</object>
Avatar billede jakobdo Ekspert
14. februar 2011 - 15:43 #21
Vis nu et link til din side.
Det vil klart være nemmest.
Avatar billede tjens Nybegynder
14. februar 2011 - 16:20 #22
Prøv med search i stedet for href:

  window.location.search = '?number=<? echo $redirect_number; ?>';

Bemærk: stråstregen før ? er fjernet.

Du ønsker jo lige netop kun at udskifte resten af url'en fra "?", så jeg tror det er mere driftssikkert.

Jeg har testet det i Chrome og IE8.

Demo, der skifter "nummer" efter 2 sek.: http://tjens.dk/eksperten/931585/?number=112233 så du kan teste i flere browsere.
Avatar billede sebster Nybegynder
14. februar 2011 - 16:22 #23
Jeg fandt en anden kode på longtailvideo.com som jeg brugte istedet: Hemed postet!

Så virkede det i alle browsers!

<script type="text/javascript" src="player/swfobject.js"></script>
<script type="text/javascript">

var currentState = "NONE";
var previousState = "NONE";

var player = null;
function playerReady(thePlayer) {
    player = document.getElementById(thePlayer.id);
    addListeners();
}


function addListeners() {
    if (player) {
        player.addModelListener("STATE", "stateListener");
    } else {
        setTimeout("addListeners()",100);
    }
}


function stateListener(obj) { //IDLE, BUFFERING, PLAYING, PAUSED, COMPLETED
    currentState = obj.newstate;
    previousState = obj.oldstate;

    var tmp = document.getElementById("stat");
    if (tmp) {
        tmp.innerHTML = "current state: " + currentState +
        "<br>previous state: " + previousState;
    }

    if (currentState == "COMPLETED") {
        document.location.href="/?number=<?php echo $redirect_number; ?>";
    }
}


function createPlayer() {
    var flashvars = {
        file:"http://youtube.com/v/<?php echo $url; ?>&skin=player/glow.zip&autostart=true",
        autostart:"true"
    }

    var params = {
        allowfullscreen:"true",
        allowscriptaccess:"always"
    }

    var attributes = {
        id:"player1", 
        name:"player1"
    }

    swfobject.embedSWF("player/player.swf", "placeholder1", "640", "385", "9.0.115", false, flashvars, params, attributes);
}
</script>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester