Javascript函数打开多个链接(如果存在)

时间:2013-05-20 21:29:58

标签: javascript

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

我想编写一个脚本,打开一个带有指定链接的新窗口(例如:http://yadayada.org/customer#.pdf)。使用相同的功能(或点击),如果它存在,我还想打开http://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();

1 个答案:

答案 0 :(得分:0)

您需要使用JavaScript检查网址的http状态代码以确定网页是否存在,如果存在,则打开链接。

如果您使用的是jQuery,那么它会让生活更轻松: Use javascript to check http status codes

否则你可以使用普通的旧JavaScript: How to get HTTP status from JavaScript

<强> [编辑] 正如评论中所提到的,这不会跨域工作。

您可以通过在请求中添加?callback=?参数来尝试以下操作force the request to be JSONP,但是您需要查看.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/

如果您需要跨域检查,我会尝试建立呼叫服务器端。