是否有可能通过JS跟踪服务器的404个答案?

时间:2013-10-01 09:28:35

标签: javascript assets

有时客户端会请求不存在的资源。我们不知道为什么。是否可以通过JS跟踪此类事件(当服务器返回404 jscsspng)文件时?

3 个答案:

答案 0 :(得分:0)

如果你做一个Ajax预取(jQuery非常方便),你可以。您只需要在每个链接上捕获click事件并执行同步ajax调用。如果是404,您可以提供正确的错误消息,如果有效,请点击链接。

如果页面被正确捕获,您的服务器不应该有额外的工作要做。

答案 1 :(得分:0)

要跟踪错误页面,您需要将Google Analytics跟踪代码(GATC)添加到错误页面模板中。如果错误页面上没有跟踪代码,您将无法在这些页面上进行报告或查找相关的损坏链接。请阅读更多有关GATC的信息。我认为JS无法跟踪此类错误。如果您发现任何错误,请告诉我们。

谢谢&问候, Mainak

答案 2 :(得分:0)

您可以使用类似的图像:

function preloadImages(data) {

    var newImages = [];

    for (var i = 0; i < data.length; i++)
    {
        try
        {
            newImages[i] = new Image();
            newImages[i].src = data[i];
            console.log(newImages[i].src);
            newImages[i].onload = function() {
                var src = this.src;
                console.log("Succes loading image: " + src);
            };
            newImages[i].onerror = function() {
                var src = this.src;
                console.log("Error loading image: " + src);
            };
        }
        catch (ex) {
            console.log("Image Loading Error: " + ex);
        }
    }
}

var images = [
    'http://cdn.sstatic.net/stackoverflow/img/sprites.png',
    'unknown.jpg'
];

preloadImages(images);

不幸的是,您仍然必须知道所有图像的链接,并且您无法使用此跟踪js和css文件。

所以你肯定需要ajax ......

function urlExists(url) {
    var http = new XMLHttpRequest();
    http.open('HEAD', url, false);
    http.send();
    return http.status!=404;
}

然后你需要能检查每个可能的js,css和png链接的函数。这很容易做(假设您只想跟踪3个html元素:和)。 既然你没有试图在css文件中跟踪被称为背景图像的图像,那就更难了......