我正在寻找以下方案的解决方案:
我想编写一个脚本,打开一个带有指定链接的新窗口(例如: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();
答案 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/
如果您需要跨域检查,我会尝试建立呼叫服务器端。