элегантное решение для автоматической загрузки - PullRequest
2 голосов
/ 10 февраля 2009

В настоящее время я использую мета http-экв = 'Обновить' для автоматического запуска загрузки PDF. однако это по-разному влияет на каждый из браузеров.

Основная проблема связана с IE (6 и 7), когда пользователь перенаправляется в PDF, если пользователь нажимает кнопку «Назад», его отправляют обратно на страницу, которая инициировала загрузку, а затем снова быстро перенаправляют в PDF. 1003 *

Firefox на окнах имеет больший эффект, но все еще не совершенен, пользователь попадает на страницу загрузки и перенаправляется в PDF. Однако, если они используют кнопку «Назад», они полностью пропускают страницу загрузки.

В настоящее время Firefox в Linux дает именно тот эффект, который я хочу. Поскольку страница загрузки перенаправляет вас в PDF, а кнопка «Назад» из PDF возвращает вас обратно на страницу загрузки, и там вы остаетесь.

Я пытался использовать функцию javascript setTimeout () для задержки всплывающего окна PDF, однако задержка не работает ни в одном браузере, и кажется, что всплывающее окно не работает в IE7.

Кто-нибудь реализовал элегантное решение проблемы, которую я мог бы использовать?

Заранее спасибо за помощь

Ответы [ 4 ]

1 голос
/ 10 февраля 2009

Referrer

Вы можете проверить реферер:

if (document.referrer != "http://homepage.com/file.pdf") {
    // go to the file
}

Это немного сложнее, потому что вы должны сравнивать с абсолютным URL-адресом реферера, но это не должно быть проблемой.

Печенье

Вы можете установить cookie при первом входе на страницу загрузки. Если cookie установлен (для каждого файла другая запись в cookie), вам не следует перенаправлять.

Недостатком является то, что если кто-то перезагрузит страницу (потому что он хочет увидеть файл во второй раз), он больше не сможет получить к нему доступ. Вокруг этого есть несколько возможностей:

  • Установить временную метку, срок действия которой истекает в файле cookie.
  • Добавить ссылку на страницу, которую пользователь может щелкнуть вручную.

Настройка / Получение куки:

if (document.cookie && document.cookie == "I was here!") {
    alert(document.cookie);
} else { // set a cookie
    document.cookie = "I was here!";
}

Javascript можно перенаправить так:

window.location.href = "http://www.google.com";
0 голосов
/ 09 июля 2009

Вы можете добавить iframe в DOM через javascript с src, установленным на URL, который вы хотите загрузить. Браузер не будет менять страницу вообще, загрузка только начнется. Его можно скрыть с помощью CSS, и пользователь даже не узнает, что это там.

0 голосов
/ 13 февраля 2009

Если я понял, что вам нужно правильно, вы хотите сделать что-то вроде поведения при обмене файлами: пользователь ждет несколько секунд со счетчиком, а по истечении времени ожидания вы перенаправляете его на страницу, которая начинает загрузку.

Может быть, вам следует просто показать ссылку , чтобы загрузить страницу вместо перенаправления? Эта страница должна отправлять заголовки «принудительно», чтобы избежать навигации по ней. Если кто-то попытается получить доступ к этой странице напрямую - проверьте реферер или заголовки или любую другую защиту, которую вы можете себе представить (например, динамические ссылки), возможно, у вас уже есть такая.

Это решение позволит вам избежать магии JS и сделает ваш код кросс-браузерным без проблем.

0 голосов
/ 13 февраля 2009

использовать всплывающее окно JavaScript

таким образом, когда пользователь обращается к pdf, он находится в другом браузере, который вы можете закрыть После этого вы можете продолжить навигацию по сайту.

...