我有一个功能来检查结果是否在服务器上。

var d = document;
var dl = d.location;
var w = window;
var wt = w.setTimeout;
var X = XMLHttpRequest;
function _checkreload() {
    var x = new X();
    x.open('GET', '?test=results');
    x.onreadystatechange = function (c) {
        if (x.readyState === 4) {
            if (x.status == 205) {
                dl.reload(true);
            } else {
                wt(_checkreload, 200);
            }
        }
    };
    x.send();
};

_checkreload();

有时由于未知原因取消重新加载:

javascript - document.location.reload(true) 在 chrome 中取消-LMLPHP

问题

如何找出重新加载被取消的原因?

请求的详细信息

由于请求已取消,因此详细信息 Pane 中没有信息。即使某些字节已发送到服务器(甚至从服务器响应回浏览器),chrome 也不会显示它们。

最佳答案

尝试在 try {} catch 函数中添加 _checkReload。这将帮助您了解错误是什么,如果它在 JS 方面。

var d = document;
var dl = d.location;
var w = window;
var wt = w.setTimeout;
var X = XMLHttpRequest;
function _checkreload() {
    try { // Add a try here...
        var x = new X();
        x.open('GET', '?test=results');
        x.onreadystatechange = function (c) {
            if (x.readyState === 4) {
                if (x.status == 205) {
                    dl.reload(true);
                } else {
                    wt(_checkreload, 200);
                }
            }
        };
        x.send();
    } catch (err) { console.log(err); } // ... and a catch there.
};

_checkreload();

当您的函数重新加载 HTML 页面时,我建议您使用 chrome 开发人员工具上的 enable the Preserve log feature。这在调试时会有很大帮助。

最后但并非最不重要的一点,请注意,如果您从 localhost 运行此代码,您可能会遇到 CORS 错误。

关于javascript - document.location.reload(true) 在 chrome 中取消,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53903821/

10-10 21:32
查看更多