【问题标题】:Javascript: Clicking Link to Download pdfJavascript:单击链接以下载 pdf
【发布时间】:2014-02-17 11:18:11
【问题描述】:

我正在开发一个 JS 程序,它应该打开一个网页 www.mysite.com 并单击该网页内的链接以下载 pdf。 点击链接如下:

<a onclick="download();return false;" href="#noWhere">Click to Download</a>

一般情况下,手动点击链接,会调用如下函数下载pdf:

function download() {
    document.forms[0].action = path + "/xxW04_sv_0140Action.do";
    document.forms[0].target = "_self";
    document.forms[0].submit();
}

我的代码是简化的javascript代码来打开页面并点击“点击下载”按钮是这样的:

<script>

var linkname = "http://www.mysite.com";

var windowname = "window_1"

// Opens a new window
var myWindow = window.open(linkname, windowname ,"width=400,height=600");    

//should open a link to download pdf
myWindow.document.getElementById('href = \"#noWhere\"').click();

</script>

到目前为止,我可以在单独的窗口中使用“mysite.com”打开网页,但由于某种原因,没有发生按钮点击,当然也没有下载 pdf。 当然,如果我手动点击“点击下载”按钮,它就会下载。

谁能告诉我我做错了什么?上面的js代码为什么不能模拟点击?

或者可能给我一些尝试。任何帮助都非常感谢,比你。

更新: 从下面的初步答案来看,这种方法可能注定要失败!谁能建议我下载这些 pdf 文件的更好方法?

【问题讨论】:

  • 如果网站与您的脚本不在同一个域中,您将无法使用 javascript 点击这些网站。为什么不能直接将 .pdf 的 url 复制到脚本中?
  • getElementById('href = \"#noWhere\"') 不起作用。您传递给此方法的字符串不是 id。您应该使用 querySelectorAll
  • @kamilkp,我认为 getElementById('href = \"#noWhere\"') 可能是一个长镜头,但链接上没有这样的 id。您是否看到任何其他方式来识别此链接?我将如何使用“querySelectorAll”?
  • document.querySelectorAll('[href="#noWhere"]')

标签: javascript html


【解决方案1】:

你最好使用:

<a href="http://www.mysite.com/mypdf.pdf">

这应该会下载那个 pdf 文件。

【讨论】:

  • 我很想使用文件的路径,@Karlo Sintic,就像上面一样,但我不知道。 pdf 可以从网站免费下载,但因为每周都有很多,所以我想自动化下载过程。无论如何我可以找到pdf的路径吗?正如我所说,通常我只需单击似乎运行的那个 href
【解决方案2】:

这行不通。 same-origin policy 将阻止您访问从其他域加载的任何页面的内容。

另外,正如@kamilkp 所指出的,您必须为getElementById() 函数提供一个id 值。您不能只是在其中插入任何旧东西并期望它能够工作。

另一个问题是您依赖点击来实现此功能。那些使用 tab 键选择链接然后按 Enter 跟随链接的用户呢?

【讨论】:

  • 感谢您现在让我了解“同源政策”Adassko 和@Squeamish。如果我不能使用 JS,我可以使用其他脚本语言吗?
猜你喜欢
  • 2019-08-25
  • 2019-02-16
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
  • 2010-12-25
  • 2015-10-14
  • 1970-01-01
相关资源
最近更新 更多