Bonjour,

Je présente sur une page web une liste de liens pour télécharger un par un divers documents.

Cette page s'auto rafraîchit, certains documents non téléchargés pouvant avoir été supprimés entre temps à l'initiative du serveur, sans être téléchargés donc.

Mais lorsque l'utilisateur clique pour télécharger l'un de ces documents, la balise refresh, pourtant présente dans le code html, ne fait plus son effet. Elle est comme neutralisée par ce clic.

Tout en maintenant la fonction de seul téléchargement pour ces url, j'ai imaginé possible d'ajouter une action onClick dans le corps du code <a href></a>, qui rappellerait l'url de cette page, qui afficherait une liste à jour.

Mais je suis tout sauf connaisseur de JS, et j'ai besoin d'une piste.

Merci d'avance à qui aurait un bout de code à me donner, et bonne semaine.
Bonjour,

Il faudrait peut être nous en dire un peut plus sur ce que tu désir faire et poser un morceau de code pour qu'on comprenne mieux.
Bonjour uniuc,

Désolé pour le retard, j'ai en cours un souci d'accès.

Je ne sais pas si du code aidera à mieux comprendre mon problème, mais je vais essayer.

Soir une page dédiée à lister des liens correspondant à des documents téléchargeables, dont l'adresse est :
https://www.mondomaine.com/telechargements/

La liste des documents pouvant changer sur le serveur, dans l'entête html figure une balise pour que cette page se rafraîchisse :
<base href="https://www.mondomaine.com/">
<meta http-equiv="refresh" content="15; url=/telechargements/">

Tant qu'aucun événement ne se produit sur cette page, le rafraîchissement se déroule normalement, et des documents apparaissent ou disparaissent de cette liste selon les dispos sur serveur.

Mettons que la liste des documents disponibles soit :
• <a href="/telechargements/telechargements/document_01.txt">Doc 01</a>
• <a href="/telechargements/telechargements/document_02.txt">Doc 02</a>
• <a href="/telechargements/telechargements/document_03.txt">Doc 03</a>
• <a href="/telechargements/telechargements/document_04.txt">Doc 04</a>

Cliquer sur l'un de ces liens ne charge pas de page qui correspond au lien, mais provoque le téléchargement direct du document sur l'appareil, ce qui est le but.

Mais alors l'autorafraîchissement de la page mère ne se produit plus.

D'où l'idée peut-être simpliste d'ajouter au clic "html" sur chacun de ces liens une action JS rafraîchissant cette page mère. Un seul clic générerait ainsi deux actions.

Genre :
<a href="/telechargements/telechargements/document_01.txt" onClick(toUrl="https://www.mondomaine.com/telechargements/")>Doc 01</a>

Mais je ne sais pas si c'est faisable, ni comment.

La doc n'est pas rare, mais au contraire le fatras trouvé ne m'a rien montré de très clair, du moins avec les mots clés que j'ai utilisés dans google.

D'où cet appel à une bonne âme.
Je vois,

Alors une solution toute bête qui va t’éviter de passer par du php ou du js.

tu va faire une page sur la quelle tu va poser un refresh de 8 par exemple.
dans cette page tu va inclure une <iframe>,

https://www.w3schools.com/tags/tag_iframe.ASP#

De là tu as deux solutions:

- Soit tu redirige l'url de <iframe> directement sur le dossier du serveur qui contiens tes doc.
Pour le coup ca te demanderas peut être de faire un fichier .htaccess sur le serveur pour autoriser l'acces au dossier téléchargement.
Ca te donneras un truc de ce genre dans <iframe>

https://cdimage.debian.org/debian-cd/current/amd64/

- Soit tu redirige <iframe> sur une page html qui listeras tes doc.

l'idée est de rafraichir la première page qui va ré appeler la page qui contiens tes doc.

Mais à mon sens la solution la plus propre c'est un couple php / Mysql et tes doc dans une base de données.
Modifié par uniuc (18 May 2023 - 18:35)
Merci uniuc pour cette suggestion.

Je vais regarder du côté de la solution <iframe>.

J'imaginais toutefois que deux actions en un clic arrangeraient mes affaires, le seul click sur un lien disponible pouvant déjà provoquer le rafraîchissement immédiat de la page mère.

Mon site est en effet une base de données, et en réalité c'est une des tables de la base qui gère les caractéristiques des documents, et donc pas seulement leur simple présence ou non dans un dossier téléchargements disponibles. Cette base peut aussi décider de les supprimer, passé un certain délai par exemple, pour mettre fin à leur disponibilité en ligne.

Merci encore et bonne fin de journée.
Dans ce cas le mieux c'est php/mysqli

Appel d'une colonne active dans ta table qui listeras les doc actif sur ta page web.
affichage soit dans une liste déroulante soit dans une zone.
Au clic un téléchargement / rafraichissement.

avec UPDATE SET WHERE

Alors par contre moi je ne saurais pas le faire, je ne pourrais pas te garantir qu'il n'y aurais pas de failles de sécurités.

Mais sur des fofo php je pense qu'ils pourrais t'en dire plus.
Modifié par uniuc (18 May 2023 - 21:25)
Merci uniuc,

Je vais creuser l'idée d'une liste active html mais en post je ne suis pas sûr de reproduire aussi simple et direct que l'url get.

Sinon, en excluant le contexte du téléchargement, mettons que je fais un lien en JS sur un élément DIV, en utilisant onClick(), quelqu'un saurait-il me dire ce qu'on met comme argument entre les ()pour ouvrir une url avec cette commande ?

Merci d'avance et bon week end.
Merci uniuc,

La solution la plus basique et efficace était en effet d'insérer une iFrame.

Ce que j'ai fait et qui convient.

Bonne semaine.