首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery替代链接onerror?

jquery替代链接onerror?
EN

Stack Overflow用户
提问于 2015-03-20 05:29:41
回答 2查看 205关注 0票数 0

我的jquery应用程序在html中包含一个指向托管在服务器上的文档的链接,某些用户将无法访问该文档。我可以在另一台服务器上托管文档的副本。

如果用户无法访问原件,我希望用户被定向到副本。但如果可能的话,可以访问原件。

我想:

代码语言:javascript
复制
    <a href="http://www.theoriginal.org"     onerror="http://www.thecopy.org">Link</a>

但这一点被忽略了。我看到了很多关于破碎图像的问题和答案,但关于其他类型的链接的问题和答案很少。

如果相关,“原始”链接由一些javascript插入。

我尝试了建议的Ajax代码,使用google的主页作为我的示例url,不幸的是遇到了这样的情况:“跨域请求被阻止:同源策略不允许读取http://www.google.co.nz/上的远程资源。这可以通过将资源移动到相同的域或启用CORS来解决。”所以我不能以这种方式测试页面的存在。

EN

回答 2

Stack Overflow用户

发布于 2015-03-20 05:46:16

您可以发出一个ajax请求,并根据响应代码更改链接href

代码语言:javascript
复制
<a class="if-not-working" data-replace-with="http://thecopy.org" href="http://www.theoriginal.org">Link</a>

JS:

代码语言:javascript
复制
$('.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'));
      }
    }
  });
});
票数 0
EN

Stack Overflow用户

发布于 2015-03-20 06:08:26

下面是检查文档是否存在的通用jQuery/ajax代码:

代码语言:javascript
复制
    $.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'');
    }
});

如果您的页面上有许多需要备用链接的链接,您可以通过循环遍历页面中的所有链接并传递其中的备用链接来使其成为一个函数,否则循环遍历整个页面是一种过度的杀伤力。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29155358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档