【问题标题】:Opening pdf in a new window through vuejs通过vuejs在新窗口中打开pdf
【发布时间】:2020-11-08 13:05:38
【问题描述】:

目前,我正在使用 vuejs 开发我的个人网站,当我尝试通过单击按钮在另一个窗口中打开我的简历时遇到错误。发生的事情是,当我单击相应的按钮时,它没有打开 pdf,而是再次呈现主页。这是我的按钮 HTML 元素:

<button class="button in-left2" v-on:click="openPdf()" target="_blank">Resume</button>

这里是对应的方法

openPdf(){
  window.open("./Avi-Dave-Resume.pdf") 
}

我的简历位于我使用 vue cli 呈现我的网站的目录中。我的简历在我运行服务器的目录中。我觉得我的文件路径有误,但很想了解有关此问题的更多信息。

【问题讨论】:

  • 您可以尝试使用简历链接将标签button 更改为a href
  • 听起来像是服务器配置或客户端路由问题。如果 pdf 来自与应用程序相同的服务器,并且您使用 HTML5 进行无哈希客户端路由,则需要允许链接绕过将每个请求映射到 index.html 的配置

标签: javascript html vue.js pdf frontend


【解决方案1】:

您可以创建一个用于显示 pdf 的页面

使用 iframe 显示 pdf

<iframe src='pdf_name.pdf' ></iframe>
  • 在 routes.js 中创建到该页面的路由
  • 当您点击该页面时,它会将您引导至该页面

【讨论】:

  • 我建议你使用路由器而不是使用href的
【解决方案2】:

我的简历在我运行服务器的目录中

将您的简历放入公共文件夹,例如:public/Avi-Dave-Resume.pdf

在 vue 中:

<a href="./Avi-Dave-Resume.pdf" target="_blank">pdf</a>

更多信息请参考here

【讨论】:

  • 你拯救了我的一天,谢谢。
【解决方案3】:

您可以将当前的 html 标记更改为另一个。

<a href="path/to/resume/Avi-Dave-Resume.pdf" class="button in-left2" target="_blank">Resume</button>

您可以删除v-on:click="openPdf() 和函数openPdf()

他们将不再需要。

【讨论】:

  • 所以我实际上也尝试了这个,但不知何故它仍然重新呈现了我网站的主页。我觉得我走自己的路的方式是错误的。所有这些代码都在我的一个组件文件中,我什至将我的简历移动到 assets 文件夹,但它仍然在做同样的事情
  • 它可能被缓存在某个地方,请在新标签中尝试(隐身模式)