Apa cara terbaik lintas browser untuk membuka dialog unduhan (anggap saja kita dapat menyetel disposisi konten: lampiran di tajuk) tanpa keluar dari laman saat ini, atau membuka munculan, yang tidak berfungsi dengan baik di Internet Explorer (IE ) 6.
javascript
mkoryak
sumber
sumber
Content-Type: application/octet-stream
danContent-Disposition: attachment
.Javascript ini bagus karena tidak membuka jendela atau tab baru.
sumber
Saya selalu menambahkan target = "_ blank" ke tautan unduhan. Ini akan membuka jendela baru, tetapi segera setelah pengguna mengklik simpan, jendela baru ditutup.
sumber
Letakkan ini di bagian head HTML, atur
url
var ke URL file yang akan diunduh:Kemudian masukkan ini ke dalam body, yang akan memulai pengunduhan secara otomatis setelah 5 detik:
(Dari sini .)
sumber
Saya tahu pertanyaan itu telah diajukan
7 years and 9 months ago
tetapi banyak solusi yang diposting tampaknya tidak berfungsi, misalnya menggunakan<iframe>
karya hanya denganFireFox
dan tidak berfungsiChrome
.Solusi terbaik:
Solusi kerja terbaik untuk membuka pop-up unduhan file
JavaScript
adalah dengan menggunakanHTML
elemen tautan, tanpa perlu menambahkan elemen tautan kedocument.body
seperti yang dinyatakan dalam jawaban lain.Anda dapat menggunakan fungsi berikut:
Dalam aplikasi saya, saya menggunakannya dengan cara ini:
Demo Kerja:
Tampilkan cuplikan kode
catatan:
link.download
atribut agar browser tidak membuka file di tab baru dan mengaktifkan pop-up unduhan.sumber
link
kali klik dan menyembunyikannya setelah timeout, menggunakan kode ini:link.onclick = function() { document.body.innerText = "The file is being downloaded ..."; setTimeout(function() { document.body.innerText = ""; }, 2000); }
, Anda dapat melihatnya bekerja di ini biola , tetapi perlu diingat bahwa ini bukan cara yang disarankan untuk melakukannya, akan lebih baik jika kita menggunakannyaAjax
.iframe
lihat ini .Saya telah mencari cara yang baik untuk menggunakan javascript untuk memulai pengunduhan file, seperti yang disarankan pertanyaan ini. Namun jawaban ini tidak membantu. Saya kemudian melakukan beberapa pengujian xbrowser dan menemukan bahwa iframe berfungsi paling baik di semua browser modern IE> 8.
class="screenReaderText"
adalah kelas saya untuk mengatur gaya konten yang ada tetapi tidak dapat dilihat.css:
sama seperti .visuallyHidden di html5boilerplate
Saya lebih suka ini daripada metode javascript window.open karena jika tautannya rusak, metode iframe tidak melakukan apa-apa sebagai lawan mengarahkan ke halaman kosong yang mengatakan file tidak dapat dibuka.
sumber
Menggunakan API File URL Objek Blob HTML5 :
sumber
URL.revokeObjectURL(url)
, saat file tidak lagi diperlukan untuk mengosongkan memoriMengubah lokasi jendela dapat menyebabkan beberapa masalah terutama saat Anda memiliki koneksi yang terus-menerus seperti websocket. Jadi saya selalu menggunakan solusi iframe lama yang bagus.
HTML
Javascript
sumber
Jika tautannya ke url file yang valid, cukup menetapkan window.location.href akan berfungsi.
Namun, terkadang tautan tersebut tidak valid, dan diperlukan iFrame.
Lakukan event.preventDefault normal Anda untuk mencegah jendela terbuka, dan jika Anda menggunakan jQuery, ini akan berfungsi:
sumber
Setelah berjam-jam mencoba, fungsinya lahir :) Saya punya skenario di mana saya harus menampilkan loader tepat waktu ketika file sedang bersiap untuk diunduh:
Bekerja di Chrome, Safari, dan Firefox
sumber
Bagaimana tentang:
Cara ini bekerja pada semua browser (menurut saya) dan membiarkan Anda meletakkan pesan seperti: "Jika unduhan tidak dimulai dalam lima detik, klik di sini."
Jika Anda membutuhkannya harus dengan javascript .. nah ...
Salam
sumber
Iframe kecil / tersembunyi dapat berfungsi untuk tujuan ini.
Dengan begitu Anda tidak perlu khawatir akan menutup pop up.
sumber