Funktion um Datei Download zu starten

strukturart

Erfahrenes Mitglied
Hallo,

ich habe einen RSS-Reader/Podcast downloader für KaiOs(DumbPhone) geschrieben.

strukturart/rss-reader

Leider schaffe ich es nicht mit -Javascript eine Datei Download zu starten.

ich habe folgendes probiert:

Code:
if ($(":focus").hasClass("podcast")) {
               //window.location.assign(link_download);
               $('a#download-button').attr("href", link_download);

               $('a#download-button').css("background", "yellow");
               $('a#download-button').focus();
               $('a#download-button').click();

               alert($('a#download-button').attr("href"))
               }

Was mache ich falsch ?
 

Sempervivum

Erfahrenes Mitglied
Wann wird denn dieses JS ausgeführt? Hoffentlich nicht beim Laden der Seite, denn dann hat sicher noch nichts den Focus.
 

strukturart

Erfahrenes Mitglied
Nein nicht beim laden der Seite, es ist eine aktive Aktion des Users. Er kann die Podcast anhören oder downloaden. Mit window.location.assign(link_download); funktioniert der download bei einige Quellen jedoch nur wenn die url mit .mp3 || .ogg || .... endet. Manche urls enden jedoch mit ...?lang=de&..... dann funktioniert es nicht.
 

Sempervivum

Erfahrenes Mitglied
Wundert mich, dass der Browser Audiodateien herunter lädt statt sie abzuspielen. Es gibt ja das Attribut "download", mit dem man normaler Weise erzwingen kann, dass ein Link zum Download angeboten wird. Hast Du das schon drin?
 

Sempervivum

Erfahrenes Mitglied
Ich habe mal eine Testdatei mit statischen Links und Buttons gebaut mit dem Ergebnis, dass es mit Vanilla-JS funktioniert, mit jQuery jedoch nicht. Googeln nach diesem Problem findet dieses:
https://stackoverflow.com/questions...wnload-link-using-jquery-doesnt-download-fileDas EDIT von UweB sagt mehr oder weniger aus: "It's not a bug, it's a feature", d. h. von jQuery so gewollt.
Und deine Vermutung, dass das Klick mit jQuery nicht genau so funktioniert wie das mit der Maus trifft offenbar zu.
Lösung, indem man den Klick mit Vanilla-JS anwendet.
 

basti1012

Erfahrenes Mitglied
ich würde das mal ohne a versuchen
Code:
 $('#download-button').click();

das macht man so wie du es gezeigt hast mit klassen.( mit id kenne ich das nicht )

EDIT: Nach dem ich den Beitrag von @Sempervivum gelesen habe kann es sein das dies hier keine Wirkung hat
 

Sempervivum

Erfahrenes Mitglied
das macht man so wie du es gezeigt hast mit klassen.( mit id kenne ich das nicht )
Trifft teilweise zu, insoweit, dass eine ID sowieso schon dokumentweit eindeutig ist und nicht weiter eingegrenzt werden muss. Ich bin mir aber ziemlich sicher, dass es mit dem a davor auch funktioniert, weil es ein gültiger Selektor ist.
 

strukturart

Erfahrenes Mitglied
Oder waere es moeglich mit einer Regex die URL zu splitten so das nach .mp3/.ogg/... nichts mehr kommt und der Browser die Datei downloaded ?
 

basti1012

Erfahrenes Mitglied
Geht das mit dein download link den nicht ?
Habe das mal gerade getestet und eine normale Musik Datei kann ich öffnen oder Downloaden
Code:
<a href="44-sounds/bell_ring.ogg" download><h3>Datei downloaden</h3></a>
<br>
<a href="44-sounds/bell_ring.ogg"><h3>Datei höhren</h3></a>
Da würde auch das click() mit Vanilla JS gehen was sempervivum da schon geschrieben hatte.

Vieleicht machst du mal eine Demo fertig wo man sehen kann wo das problem ist ?
PS: Link kann man splitten , aber ob das hilft bei deinen vorhaben ?

Man könnte den Datei Download auch mit Php machen.