href属性中的备用链接

3

3
在HTML中,如果没有服务器端或客户端脚本的帮助,这是不可能实现的。 - undefined
2
你能展示一下你正在使用的实际代码吗? - undefined
2
@jsve 干嘛用的?很明显,OP正在使用的是一个HTML锚点标签。 - undefined
@arkascha好的,是的,我明白那是一个不幸的答案。能否请您告诉我如何通过服务器/客户端脚本来实现...哪种方式更容易呢?我打算在主要的URL失败时提供备用的下载链接,以提供更好的用户体验。 目前只使用了一个链接:http://www.pratanumandal.tk/fileguard.html - undefined
@AlvaroMontoro 我从未声称在其他系统中不可能。但正如你所说:这是离题的 :-) - undefined
显示剩余9条评论
1个回答

2
我为您创建了一个带有概念验证的 Fiddler:http://jsfiddle.net/zbb7j2pq/1/ HTML:

<a id="button" href="" 
    data-primary-target="http://www1.some-server.example/file"
    data-secondary-target="http://www2.some-server.example/file"
    data-ternary-target="http://www2.some-server.example/file">
    Download
</a>

脚本(在这种情况下为了方便使用jQuery库):

$(document).ready(function(){
    $('#button').on('click', function(e){
        e.preventDefault();
        var targets = [
            $(e.target).data('primary-target'),
            $(e.target).data('secondary-target'),
            $(e.target).data('ternary-target')
        ];
        $(targets).each(function(key, target){
            $.ajax({
                type: 'HEAD',
                url: target,
                success: function() {
                    window.location = target;
                }
            });
        });
    });
});

如果您在Fiddler中运行该代码,则可以在浏览器的开发控制台的网络选项卡中看到与目标网站的头部请求。由于跨域问题,实际下载不会开始。这是一个单独的问题。
该代码允许您遍历指定的替代方案并对每个执行例程。在该例程内,您可以进行头部请求并检查其是否有效可用。如果是:将窗口位置对象更改为它,下载将开始。如果不是,只需跳过下一个替代方案。
这应该指向正确的方向。但是,您需要深入JavaScript编程一点。

谢谢!我会尝试将其集成到我的下载按钮中。 - undefined
1
我再次更新了答案,以实现真正的网络请求策略。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接