如何在 Nuxt 中点击 link 下载文件?
How to download a file on a link click in Nuxt?
我遇到了一个边缘案例问题,如果用户在几条 Nuxt 路线上导航,点击网站“标志”,这是一个锚标签回到家,然后点击浏览器本机后退按钮,最后点击link 应该打开 pdf,它重定向到我的 404 页面。
如果用户在页面加载时单击 pdf link,它会按预期运行。不确定这里发生了什么?我试图在 pdf 上添加一个强制 window.open
的方法,但它仍然损坏。
锚示例:
<a
class="text--uppercase decorate-hover"
@click.prevent="forceHrefToPdf('Instructions.pdf')"
>
Instructions
</a>
方法:
forceHrefToPdf(pdf) {
window.open(pdf, "_blank")
}
PDF 位于 /root/static
目录中。
也许试试这个
<template>
<button @click="downloadMe">download me</button>
</template>
<script>
export default {
methods: {
downloadMe() {
const link = document.createElement('a')
link.href = '/Instructions.pdf'
link.download = 'Intructions.pdf'
link.target = '_blank'
link.click()
},
},
}
</script>
此外,请勿使用 a
标记,它用于从一个页面移动到另一个页面。而是请使用 button
,他的目标是 action
,例如下载 PDF。您的客户不是决定它是否是 link 的人(实施细节在这里无关紧要)。
当然,这也是完全可行的,但是不推荐关于a11y
<a href="/Instructions.pdf" target="_blank" download>
Download my PDF via a link tag
</a>
我遇到了一个边缘案例问题,如果用户在几条 Nuxt 路线上导航,点击网站“标志”,这是一个锚标签回到家,然后点击浏览器本机后退按钮,最后点击link 应该打开 pdf,它重定向到我的 404 页面。
如果用户在页面加载时单击 pdf link,它会按预期运行。不确定这里发生了什么?我试图在 pdf 上添加一个强制 window.open
的方法,但它仍然损坏。
锚示例:
<a
class="text--uppercase decorate-hover"
@click.prevent="forceHrefToPdf('Instructions.pdf')"
>
Instructions
</a>
方法:
forceHrefToPdf(pdf) {
window.open(pdf, "_blank")
}
PDF 位于 /root/static
目录中。
也许试试这个
<template>
<button @click="downloadMe">download me</button>
</template>
<script>
export default {
methods: {
downloadMe() {
const link = document.createElement('a')
link.href = '/Instructions.pdf'
link.download = 'Intructions.pdf'
link.target = '_blank'
link.click()
},
},
}
</script>
此外,请勿使用 a
标记,它用于从一个页面移动到另一个页面。而是请使用 button
,他的目标是 action
,例如下载 PDF。您的客户不是决定它是否是 link 的人(实施细节在这里无关紧要)。
当然,这也是完全可行的,但是不推荐关于a11y
<a href="/Instructions.pdf" target="_blank" download>
Download my PDF via a link tag
</a>