2017-01-25 5 views
1

Ich arbeite mit Angular2 und ich habe eine Methode zum Download der Datei ... alles funktioniert gut, aber ich war mit einem <a> und heruntergeladen die Dateien mit href='routetodownload' Ich wurde gebeten, diesen Link in einigen Fällen zu deaktivieren und dann beschlossen, die <a> von <button> (der Link funktionierte als Knopf in beide Richtungen) und dies zu tun, anstatt das href Attribut zu verwenden, habe ich erstellt Funktion.
HTMLangular2: warum window.location.href bewirkt Seitenaktualisierung in Firefox, aber href nicht

<button (click)="download(url)">download</button> 

Typoskript

download(url) { 
    window.location.href = url; 
} 

aber dies verursacht ein seltsames Verhalten auf Firefox, wenn ich den Download klicken, um das Dialogfeld angezeigt speichern, aber dahinter, die Seite zu aktualisieren. Bei der Verwendung von <a href='url'> wird die Seite nicht aktualisiert, wenn das Dialogfeld Speichern als angezeigt wird

Dies geschieht nur mit Firefox ... Edge und Chrome in beiden Situationen funktioniert gut.

Ich frage mich, warum window.location.href Autorefresh auf Firefox verursacht.

Wenn jemand eine Ahnung darüber haben, informieren Sie mich bitte

UPDATE

Das Problem war immerhin der NG Live Development Server (von Winkel-cli ng serve Befehl) ... Ich habe keine Ahnung Warum passiert das nur mit Firefox? Die Sache ist, meine App ist auf IIS gehostet und ich habe keine Aktualisierung in meiner Lösung mit damit.

Ich werde später mit Jungs aus Winkel-cli Team überprüfen, was dieses Verhalten sein kann ...

Vielen Dank.

Grüße

+0

@ GünterZöchbauer mich aber das Gleiche, aber immer noch nicht verstehen, warum dies nicht mit Anker href passiert ... Sie haben keine Ahnung, wie dieses Verhalten zu vermeiden? –

+0

@Pointy danke, aber es hat nicht funktioniert. Ich habe nicht einmal ein Formular ist diese Seite;) –

Antwort

1

Dies ist nur auf dem lokalen Winkel-cli Live-Server geschieht, weil standardmäßig alle Routen zum /index.html geroutet, die die Wurzel von Ihrer Anwendung. Der angulare Router findet Ihre Datei-URL nicht und führt Sie nur zur Standardroute.

0

ich dies immer wie folgt:

<a href="/images/myw3schoolsimage.jpg" download>

den Download-Attribut für bessere Ergebnisse hinzufügen.

+0

Die "Download" -Ding wird in Safari nicht unterstützt, soweit ich weiß. – Pointy

+0

Ja, es wird nicht von Safari und I.E http://caniuse.com/#feat=download unterstützt. Nicht sicher, was passieren würde, wenn Sie _target = "blank" hinzufügen und dieses als Fallback verwenden. –

+0

Wie ich in meiner Frage stellen, funktioniert der Download bereits mit 'a + href' Ich möchte nur verstehen, warum window.location.href aktualisieren Sie die Seite in Firefox –

0

window.location.href versuchen, eine andere HTML-Seite zu laden, aber Sie sind in einem Ausnahmefall.

Sie sollten es ersetzen durch:

download(url) { 
    window.open(url); 
} 

Oder so etwas wie dies versuchen:

download(url) { 
    link = document.createElement('a'); 
    link.href = url; 
    ... 
    document.body.appendChild(link); 
    link.click(); 
    document.body.removeChild(link); 
} 
+0

ich aber über window.open aber es wird eine neue Registerkarte in Firefox öffnen ... und wenn ich 'cancel' auf dem' drücke as' Dialog speichern, die ich in einem leeren Tab sein werde ... mit „_self“ geben ich das gleiche Verhalten wie windows.location.href ... Ich werde überprüfen, ob funktionale Designer mit der window.open Lösung einverstanden sind ... wenn etwas funktioniert, werde ich einfach das Tag wieder verwenden ... Ich würde nicht wie, aber wahrscheinlich wird der einzige whay .. Danke! –

0
Verwandte Themen