用于验证 URL 的 Javascript 代码在 IE 和 Chrome 中有效,但在 Firefox 中无效

标签 javascript

我使用以下代码来确定站点上是否存在文件。我正在检查大文件,所以我不需要等待它下载,我只需要知道它是否存在。当我在 IE (11.0.9600.17843) 或 Chrome (43.0.2357.134) 上运行代码时,它为文件返回 true。当我在 Firefox (39.0) 上运行它时,它对同一文件返回 null。

    function checkUrl(url) {
        var aborted = false;
        try {

            var request = new XMLHttpRequest();
            var timer = Date.now();
            request.onreadystatechange = function () {
                if ((request.readyState > 1) & (request.status === 200)) {
                    aborted = true;
                    request.abort();
                    return true;
                }
            }
            request.open('GET', url, false);
            request.send();
            if (request.status === 200) {
                return true;
            }
        }
        catch (e) {
            console.log(e.message);
            if (aborted) { return true; }
        }
    }

知道为什么它不能在 Firefox 上运行吗?

最佳答案

您可以只发出 HEAD 请求,而不是发出 GET 请求。 HEAD 请求只会返回所请求资源的 header ,而不返回正文,因此非常适合查询文件是否存在。

关于用于验证 URL 的 Javascript 代码在 IE 和 Chrome 中有效,但在 Firefox 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31463480/

相关文章:

javascript循环遍历本地存储以查找元素

javascript - React .map 不重新渲染

javascript - 下拉菜单根据选择显示不正确的图像

javascript - 在我的案例中,通过 JavaScript 从 EntityFramework 数据库获取数据的最佳和最有效的方法是什么?

javascript - 很简单的颜色选择器如何导入呢?

javascript - 将逻辑绑定(bind)到 Aurelia 中的 ValueConverter 输出

javascript - 链接到 Vue.js 中 vuex 存储中引用的图像

javascript - 为门户网站创建交互式 SVG map

javascript - 在网格中查找随机放置的元素 (x,y)

javascript - .click() 不适用于稍后加载的跨度类