2014-02-17 611 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