Как работает ссылка на скачивание JavaScript? - PullRequest
6 голосов
/ 01 февраля 2011

Я пользуюсь сайтом Microsoft Technet, и вы можете скачать файлы ISO, нажав на ссылку на странице.Элемент выглядит так:

<a href="javascript:void(0)" onmouseout="HideToolTip()"
    onmouseover="ShowToolTip(event,'Click here to download.')"
    onclick="javascript:RunDownload('39010^313^164',event)"
    class="detailsLink">Download</a>

Я не смог найти метод RunDownload() в сценариях.И мне стало интересно, что это может сделать.Обычно я имею в виду, что когда я предоставляю ссылку для загрузки кому-либо, я даю привязку к ней:

<a href="www.foo.com/mymp3.mp3">download</a>

Но это работает по-другому, что делает скрипт?Потому что даже когда я запускал «Fiddler», я не мог видеть фактическое местоположение загрузки.

Ответы [ 3 ]

8 голосов
/ 01 февраля 2011

нет такой вещи, как ссылка на скачивание javascript. Javascript может открыть новое окно или симулировать щелчок по ссылке.

То, что вам нужно найти, это то, к какому URL приведет функция, вызванная этим щелчком.

вот пример того, как это сделать:

Предположим, у нас есть:

<a id="download">download Here §§§</a>

тогда этот код jQuery:

$('#download').click( function() {
    window.location.href = 'http://example.org/download/ISO.ISO';
} );

будет перенаправлять на URL http://example.org/download/ISO.ISO. Зависит ли этот URL-адрес от загрузки или нет, зависит от заголовков HTTP и вашего браузера, а не от того, что делает JavaScript.

2 голосов
/ 01 февраля 2011

Местоположение загрузки может быть переписанным путем URL. Это означает, что, возможно, некоторые параметры задаются с помощью HTTP Post, а некоторые обработчики HTTP на веб-сервере или в веб-приложении могут получать некоторые аргументы из запроса HTTP и записывать байты файла в ответ HTTP, который абсолютно скрывает, где файл находится в актуальная файловая система сервера.

Может быть, это то, что за кадром и мешает вам узнать местоположение файла.

Например, мы можем получить это: http://mypage.com/downloads/1223893893

И вы запросили исполняемый файл типа "what.exe" для загрузки его на жесткий диск. Где находится "http: /mypage.com/downloads/whwhat.exe"? На самом деле, это не существует. Это байтовый массив, сохраненный в длинной базе данных в некоторой записи, и веб-приложение «mypage» обрабатывает запрос файла, идентифицируемого как «1223893893», который может быть комбинацией идентификатора, даты и времени или любого другого аргумента.

0 голосов
/ 27 мая 2015

Я думаю, что функция RunDownload может сделать то, что она может сообщить серверу с помощью запроса на получение сервера информацию о предстоящей загрузке или, возможно, потребуется запустить фон загрузки, установивАтрибут target для iframe, поэтому пользователю не нужно открывать другую вкладку и загружать файл на той же странице.

<a href="file.mp3" onclick="runDownload();">Download</a>

JS

var runDownload=function(){
    e.preventDefault();
    increaseDownloadCountOnTheServer(location);
    window.location.href="filelocation.exe";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...