我的jquery应用程序在html中包含一个指向托管在服务器上的文档的链接,某些用户将无法访问该文档。我可以在另一台服务器上托管文档的副本。
如果用户无法访问原件,我希望用户被定向到副本。但如果可能的话,可以访问原件。
我想:
<a href="http://www.theoriginal.org" onerror="http://www.thecopy.org">Link</a>但这一点被忽略了。我看到了很多关于破碎图像的问题和答案,但关于其他类型的链接的问题和答案很少。
如果相关,“原始”链接由一些javascript插入。
我尝试了建议的Ajax代码,使用google的主页作为我的示例url,不幸的是遇到了这样的情况:“跨域请求被阻止:同源策略不允许读取http://www.google.co.nz/上的远程资源。这可以通过将资源移动到相同的域或启用CORS来解决。”所以我不能以这种方式测试页面的存在。
发布于 2015-03-20 05:46:16
您可以发出一个ajax请求,并根据响应代码更改链接href
<a class="if-not-working" data-replace-with="http://thecopy.org" href="http://www.theoriginal.org">Link</a>JS:
$('.if-not-working').each(function(){
$this = $(this);
$.ajax({
type: 'GET',
'url': $this.attr('href'),
statusCode: {
400: function() {
$this.attr('href', $this.data('replace-with'));
},
404: function() {
$this.attr('href', $this.data('replace-with'));
},
500: function() {
$this.attr('href', $this.data('replace-with'));
}
}
});
});发布于 2015-03-20 06:08:26
下面是检查文档是否存在的通用jQuery/ajax代码:
$.ajax({
url:'example.html',
type:'HEAD',
error: function()
{
//file not exists
$('a').attr('href', 'backup.html');
},
success: function()
{
//file exists
$('a').attr('href', ''example.html'');
}
});如果您的页面上有许多需要备用链接的链接,您可以通过循环遍历页面中的所有链接并传递其中的备用链接来使其成为一个函数,否则循环遍历整个页面是一种过度的杀伤力。
https://stackoverflow.com/questions/29155358
复制相似问题