0

我正在寻找以下场景的解决方案:

我想编写一个脚本,用指定的链接打开一个新窗口(例如:)http://yadayada.org/customer#.pdfhttp://yadayada.org/customer#A.pdf使用相同的功能(或单击),如果存在,我也想打开它。下面我有一个可以在 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?callback=?,但您需要查看.fail回调,因为 pdf 显然不是 JSON 数据。另外,请注意整个 PDF 已下载,因此大文件会有延迟。

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 回答