2

現在、meta http-equiv='Refresh' を使用して PDF ダウンロードを自動開始しています。ただし、これはブラウザごとに異なる影響を与えます。

主な問題は IE (6 & 7) で、ユーザーが [戻る] ボタンをクリックすると PDF にリダイレクトされ、ダウンロードを開始したページに戻り、すぐに再び PDF にリダイレクトされます。

Windows 上の Firefox は効果が優れていますが、それでも完全ではありません。ユーザーはダウンロード ページに移動し、PDF にリダイレクトされます。ただし、戻るボタンを使用すると、ダウンロード ページを完全に見逃してしまいます。

現在、Linux 上の Firefox には、私が望む正確な効果があります。ダウンロード ページから PDF にリダイレクトされ、PDF の [戻る] ボタンをクリックするとダウンロード ページに戻り、そこにとどまります。

javascript setTimeout() 関数を使用して PDF のポップアップを遅延させようとしましたが、遅延はどのブラウザでも機能しないようで、IE7 ではポップアップが機能しないようです。

私が使用できる問題に対するエレガントなソリューションを実装した人はいますか?

助けてくれてありがとう

4

4 に答える 4

1

リファラー

リファラーを確認できます:

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";
于 2009-02-10T10:59:09.693 に答える
0

私があなたが正しい必要があることを理解した場合、あなたはファイル共有の振る舞いのようなことをしたいと思います:ユーザーはカウンターで数秒待ち、タイムアウト後、ダウンロードを開始するページに彼をリダイレクトします。

リダイレクトするのではなく、ダウンロードページへのリンクを表示するだけでよいのではないでしょうか。このページは、ブラウザがページをナビゲートしないように、ヘッダー「force-download」を送信する必要があります。誰かがこのページに直接アクセスしようとする場合は、リファラーやヘッダー、または想像できるその他の保護(動的リンクなど)を確認してください。すでに持っている可能性があります。

このソリューションにより、JSの魔法を回避でき、コードを問題なくクロスブラウザーにすることができます。

于 2009-02-13T14:13:44.223 に答える
0

ダウンロードするURLにsrcを設定してjavascriptを介してiframeをDOMに追加できます。ブラウザはページをまったく変更せず、ダウンロードが開始されるだけです。CSSを使用して非表示にすることができ、ユーザーはそれがそこにあることすらわかりません。

于 2009-07-09T18:32:47.217 に答える
0

JavaScriptポップアップを使用する

このようにして、ユーザーがpdfにアクセスすると、別のブラウザーに表示され、閉じることができます。これを行うと、サイト内を移動し続けることができます。

于 2009-02-13T13:09:55.420 に答える