2014-02-17 612 views
0

我正在开发一个JS程序,它应该打开一个网页www.mysite.com &点击该网页内的链接以下载pdf。 点击链接看起来是这样的:Javascript:点击链接下载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文件?

+0

如果您的脚本与您的脚本不在同一个域中,则无法使用JavaScript点击站点。你为什么不能将.pdf的url复制到脚本中? – Adassko

+0

getElementById('href = \“#noWhere \”')将不起作用。你传递给这个方法的字符串不是一个id。你应该使用querySelectorAll – kamilkp

+0

@ kamilkp,我认为getElementById('href = \“#noWhere \'')可能是一个远射,但是在链接上没有id。你有没有看到其他方式来识别这个链接?我将如何使用“querySelectorAll”? – arpeggio

回答

0

它不起作用。 same-origin policy将阻止您访问从其他域加载的任何页面的内容。

此外,正如@kamilkp指出的那样,您必须为getElementById()函数提供一个id值。你不能只在那里插入任何旧东西,并期望它的工作。

另一个问题是你依赖点击这个工作。如果用户使用Tab键选择链接,然后按输入以关注链接?

+0

感谢您让我现在谈谈“同源派政策”Adassko&@Squeamish。如果我不能使用JS,我可以使用其他一些脚本语言吗? – arpeggio

2

你最好使用:

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

这应该下载该PDF文件。

+0

我很乐意使用像上面那样使用文件路径@Karlo Sintic,但我不知道它。 PDF可以从网站免费下载,但由于每周都有很多,我想要自动下载过程。无论如何,我可以找出pdf的路径吗?正如我所说,通常我只是点击似乎运行的href – arpeggio