I'm definitely not looking for a way to create an anchor that looks like a button, use any back-end scripts, or mess with server headers or mime types.
You can do it with "trick" with invisible iframe. When you set "src" to it, browser reacts as if you would click a link with the same "href". As opposite to solution with form, it enables you to embed additional logic, for example activating download after timeout, when some conditions are met etc. Documented in Bootstrap 4 docs , and works in Bootstrap 3 as well. I hade a case where my Javascript generated a CSV file. Since there is no remote URL to download it I use the following implementation.
In my testing the following works for all file types and browsers as long as you use a relative link:. I noticed there were comments under a lot of the answers that said the browser would just try to open the file itself rather than downloading it depending on the file type.
I discovered this to be true. This is what finally worked for me since the file to be downloaded was determined when the page is loaded. If you can't use form, another approach with downloadjs fit nice. Downloadjs use blob and html 5 file API under the hood:. One of the simplest way for button and the text-decoration will help to alter or to remove the text decoration of the link. Another way of doing in case you have a complex URL such as file.
The solution I have come up with is that you can use download attribute in anchor tag but it will only work if your html file is on the server. Stack Overflow for Teams — Collaborate and share knowledge with a private group. Create a free Team What is Teams? Collectives on Stack Overflow. Learn more. Asked 9 years, 4 months ago.
Active 30 days ago. Viewed 1. Improve this question. Brett DeWoody Thanks to you "how to trigger a file download in javascript" would give answers much faster for any future searcher. Your restrictions in your final paragraph don't make much sense to me. If you're open to answers that use JavaScript since you say so or that require changing the DOM structure like the one you've accepted , why not also an anchor styled as a button?
I can't imagine a scenario where the first two would be fine but the anchor as a button would be problematic.
Add a comment. Active Oldest Votes. You can trigger a download with the HTML5 download attribute. That means the page and the file must share the same domain, subdomain, protocol HTTP vs. HTTPS , and port if specified. Exceptions are blob: and data: which always work , and file: which never works. If it is blank, the browser defaults to the file's name.
Improve this answer. MultiplyByZer0 4, 3 3 gold badges 28 28 silver badges 46 46 bronze badges. Joe Pigott Joe Pigott 7, 5 5 gold badges 29 29 silver badges 42 42 bronze badges. Browsers that understand download treat it as a download, otherwise it's opened in a new tab. How can this be applied to a button object instead of just an a tag?
Actually this only works for urls of the same origin as mentioned in the MDN docs. This is a huge limitation if we are looking to develop a generic solution — Akshat Gupta. The question is explicitly asking to use a button instead of a link — Quentin. Show 9 more comments. Gray k 22 22 gold badges silver badges bronze badges. Cfreak Cfreak In when the answer was originally posted it wasn't supported in any major browser.
This doesn't necessarily trigger a download. It simply causes the browser to navigate to file. Download Image. By clicking the download button. Recommended Articles. Article Contributed By :. Easy Normal Medium Hard Expert. Writing code in comment? Please use ide. Load Comments. What's New. Most popular in JavaScript. Convert a string to an integer in JavaScript Node. Collectives on Stack Overflow. Learn more. Javascript, programmatically trigger file download in firefox [closed] Ask Question.
Asked 9 years, 1 month ago. Active 3 years, 8 months ago. Viewed 30k times. Improve this question. Can you post the code in the question for posteritys sake? Add a comment. Active Oldest Votes. Improve this answer. John Myczek John Myczek Why do you need to add the element to the DOM? On Chrom 96 it works fine without — pythonmaxi. Alternative: Using location.
0コメント