【问题标题】:Disable HTML link if the URL's link returns an error如果 URL 的链接返回错误,则禁用 HTML 链接
【发布时间】:2012-08-14 08:23:05
【问题描述】:

我有一个链接到另一个页面的按钮。在单击该链接之前,我想检查该页面当前是否返回错误或者它是否不存在。我该如何编码?这可能吗?如果链接不存在或返回错误,我想禁用链接。

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    您可以使用 ajax 加载页面,然后解析它以查看是否有错误,然后再重定向用户。我还会向用户说明链接为什么不起作用。

    【讨论】:

    • 怎么样?你能给我一个例子吗。我会非常感激。谢谢。
    • @newbie 文档中有示例。 api.jquery.com/jQuery.ajax
    • 不完全是您想要的,但可能是一些开始! stackoverflow.com/questions/2493974/…
    • 根据jQuery.ajax api,“大多数“Ajax”请求受同源策略约束;请求无法成功从不同域、子域检索数据, 或协议”, “脚本和 JSONP 请求不受同源策略限制。”这里的问题是只有当相关页面存在或返回错误(成功属性)时。
    【解决方案2】:

    请注意,我会在服务器端执行此操作。但是,由于您的标签与 jquery 相关,因此我发布了一个您可以尝试使用 jquery 的解决方案。

    使用 jquery 你可以:

    var link = $('#id_of_your_a_element');
    $.ajax(
        url: link.attr('href'),
        error: function() { 
            link.hide();
        }
    );
    

    编辑

    正如 ribot 所指出的,此示例仅隐藏了链接。如果你想禁用它,你可以阻止用户点击链接时的默认行为:

    link.click(function(e) {
        e.preventDefault();
    });
    

    或者只是删除 href 属性:

    link.removeAttr('href');
    

    【讨论】:

    • 其实这里的链接是隐藏的,不是禁用的
    【解决方案3】:

    正如有人问的那样,您使用的服务器端编程语言是什么?

    在此处查看答案:How to get status code of remote url using Javascript/Ajax but NOT using jQuery?。与此相同的问题,答案涵盖所有基础。

    【讨论】:

    • 是我哈哈。当我看到 OP 用 js 或 jquery 询问时删除了评论。
    • 仍然非常相关,因为大多数公认的解决方案将使用服务器端语言,因此您实际上可以访问另一个域。
    【解决方案4】:

    点击每个请求时的 Ajax,即使它是 HEAD 请求(您通常应该使用它来测试 url 的存在,因为这就是 HTTP 动词首先存在的原因),这让我觉得这是一个非常糟糕的主意,即使您可以克服可能无法克服的跨域问题(除非您涉及由 ajax 调用的某种服务器端检查)。现在,我想你也许可以在某个地方保存响应,这样就不会重新检查链接(在客户端或服务器端),但这仍然让我觉得这是一个非常复杂的解决方案,通常不会需要解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-03
      • 2017-02-24
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2016-07-14
      • 1970-01-01
      相关资源
      最近更新 更多