0

次のシナリオの解決策を探しています。

指定したリンク (例: ) で新しいウィンドウを開くスクリプトを書きたいと思いますhttp://yadayada.org/customer#.pdfhttp://yadayada.org/customer#A.pdf同じ機能(またはクリック)で、存在する場合も開きたいと思います。以下に、2 つの新しいウィンドウでファイルを開く機能の実際のサンプルを示します。ただし、2 番目の場所が存在しない場合は、明らかに空白のウィンドウが表示されます。参照が存在しない場合は 2 ページ目を開かないようにしたいです。

function OpenFile() {
    win=window.open('http://yadayada.org/~(student_number).pdf', '_self');
    win2=window.open('http:/yadayada.org/~(student_number)a.pdf', '_blank');
    win.focus();
}

OpenFile();
4

1 に答える 1

0

ページが存在するかどうかを判断するには、JavaScript を使用して URL の http ステータス コードを確認し、存在する場合はリンクを開く必要があります。

jQuery を使用している場合は、作業が楽になり ます。javascript を使用して http ステータス コードを確認します。

それ以外の場合は、プレーンな古い JavaScript を使用できます: JavaScript から HTTP ステータスを取得する方法

[編集] コメントで述べたように、これはクロスドメインでは機能しません。

次のことを試すことができます-パラメーターをリクエストに追加することにより、リクエストを強制的にJSONPにしますが、pdfは明らかにJSONデータではないため、コールバックを確認する必要があります。また、PDF 全体がダウンロードされるため、大きなファイルの場合は遅延が生じることに注意してください。?callback=?.fail

var url = "http://samplepdf.com/sample.pdf?jsoncallback=?";
$.getJSON(url)
    .fail(function( jqxhr, textStatus, error ) {
        if (jqxhr.status == 200) {
            console.log("request document found success");
        }
    })

「動作中」のデモ: http://jsfiddle.net/WmHjs/

クロスドメインチェックが必要な場合は、サーバー側で呼び出しを試みます。

于 2013-05-20T21:56:12.963 に答える