这是一个相当超现实的问题。当我在iOS上使用Chrome时,无法设置xhr.timeout,它会抛出InvalidAccessError:对象不支持操作或参数。
您可以通过在iOS上的Chrome中转到https://viktorh.net/chromebug.html并使用Chrome内置翻译器翻译页面来重现此问题 - 现在调用XHR.timeout失败。
有没有人知道为什么会这样?如果这是Chrome的错误,有没有人知道解决方法?在哪里可以报告此类问题?
这是一个相当超现实的问题。当我在iOS上使用Chrome时,无法设置xhr.timeout,它会抛出InvalidAccessError:对象不支持操作或参数。
您可以通过在iOS上的Chrome中转到https://viktorh.net/chromebug.html并使用Chrome内置翻译器翻译页面来重现此问题 - 现在调用XHR.timeout失败。
有没有人知道为什么会这样?如果这是Chrome的错误,有没有人知道解决方法?在哪里可以报告此类问题?
这很奇怪。我可以重现这个问题,看起来是Chrome在iOS上的一个小bug。默认情况下,XMLHttpRequest具有无限超时时间,但您可以通过手动创建超时来解决此问题以中止请求。为了安全起见,在请求成功或失败时,我会在loadend时清除此超时。就像这样:
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
var timeout;
oReq.addEventListener("loadend", function() {
// request over - clear timeout
clearTimeout(timeout);
});
// set a timeout to abort the request
timeout = setTimeout(function() {
oReq.abort();
// we timed out
},20000);
oReq.open("GET", "/");