Page 1 sur 1

Page aléatoire

Posté : 19 avr. 2021, 01:35
par jeanyveso
Bonjour.
Je ne connais pas grand chose au développement.
Avec mes élèves, dans le cadre d'un projet, on cherche à afficher une vidéo aléatoire grâce à un qrcode.
J'ai récupéré ce code sur internet :

Code : Tout sélectionner

<HEAD>

<SCRIPT Language="Javascript">
//<!--
function PageRand()
{
Url = new Array;
Url[0] = "https://..../video1.mp4";
Url[1] = "https://..../video2.mp4";
Url[2] = "https://..../video3.mp4";
Url[3] = "https://..../video4.mp4";
Url[4] = "https://..../video5.mp4";
Url[5] = "https://..../video6.mp4";
Url[6] = "https://..../video7.mp4";

Choice = Math.round(Math.random() * (Url.length+1));
window.open(Url[Choice],'_blank');

}
//-->

</SCRIPT>
</HEAD>

<BODY>
<A Href="#" onClick="PageRand(); return(false)">Voir</A>
</BODY>

Je rencontre deux problèmes :

- parfois, le lien amène sur une page blanche
- lorsqu'on arrive sur la page grâce au qrcode, on doit à nouveau cliquer sur "voir". Peut-on afficher directement la vidéo ?

Merci d'avance pour votre aide.

Bonne nuit.

Re: Page aléatoire

Posté : 19 avr. 2021, 10:19
par webmaster
Bonjour,

Voici quelques pistes.
Le tirage aléatoire doit correspondre aux valeurs des clés du tableau entre 0 et length+1
Dans votre cas, je pense qu'il va plus haut que length avec le round.

Un exemple de fonction de tirage ici (avec vérification des sorties et de l'équilibre du tirage) :
https://www.toutjavascript.com/livre/sc ... url=random

Pour lancer directement le chargement de la vidéo, il suffit d'appeler le script dans <body> :
<script>
PageRand();
</script>

Comme le navigateur détectera un popup, il risque de le bloquer la premiere fois. Il faudra sans doute l'autoriser au premier chargement.

Re: Page aléatoire

Posté : 19 avr. 2021, 10:46
par jeanyveso
Merci pour votre réponse.

est-ce qu'il est possible d'annuler l'ouverture d'une nouvelle fenêtre pour lire la vidéo ? Faire simplement une redirection.

Je n'ai pas bien compris la valeur length.
Que dois-je mettre po)ur éviter d'avoir une valeur vide ?
Merci d'avance.

Re: Page aléatoire

Posté : 19 avr. 2021, 13:47
par webmaster
La fonction retourne un nombre entre 1 et n

Code : Tout sélectionner

        function getTirageDe(n) {
          return Math.floor(n * Math.random() + 1);
        }
Il suffit donc de chercher une valeur entre 0 et length

Code : Tout sélectionner

var tirage=getTirageDe(Url.length) - 1
Pour remplacer l'url, on écrit :

Code : Tout sélectionner

window.location="nouvelle adresse"

Re: Page aléatoire

Posté : 20 avr. 2021, 08:54
par jeanyveso
Merci pour votre aide. Je vais regarder ça !
Bonne journée.