Google chrome extension XMLHttpRequest.onreadystatechange与addEventListener

Google chrome extension XMLHttpRequest.onreadystatechange与addEventListener,google-chrome-extension,google-apps-script,xmlhttprequest,Google Chrome Extension,Google Apps Script,Xmlhttprequest,在阅读XMLHttpRequest以在Google Chrome扩展中使用时,我遇到了一个问题 XMLHttpRequest.addEventListener,而示例中的XMLHttpRequest.onreadystatechange 向Google Apps脚本发出GET请求时,这两种方法之间是否有偏好?我不熟悉异步Javascript,在此之前我只是在GAS中工作。首选浏览器兼容性。来自MSN上的XMLHttpRequestAPI文档 onreadystatechange作为XMLHtt

在阅读XMLHttpRequest以在Google Chrome扩展中使用时,我遇到了一个问题

XMLHttpRequest.addEventListener
,而示例中的
XMLHttpRequest.onreadystatechange


向Google Apps脚本发出GET请求时,这两种方法之间是否有偏好?我不熟悉异步Javascript,在此之前我只是在GAS中工作。

首选浏览器兼容性。来自MSN上的XMLHttpRequestAPI文档


onreadystatechange
作为
XMLHttpRequest
实例的属性在所有浏览器中都受支持

包括Firefox在内的最新浏览器还支持通过标准的
addEventListener
API来监听
XMLHttpRequest
事件,此外还支持为处理程序函数设置*属性


由于应用程序脚本Web应用程序将很快只支持现代浏览器(因为本地模式和模拟模式被贬低),您可以使用任何一种模式。

onreadystatechange
触发太多,您可能不需要听它。使用(所有情况包括失败/中止),(成功),
错误
中止
事件


有关更多信息,请参阅。

此外,如果您可以控制浏览器类型/版本,则可以使用传递给onreadystatechange函数的对象执行多边形填充:

var oReq = new XMLHttpRequest();
// This part for modern browsers
oReq.addEventListener("progress", updateProgress, false);
oReq.addEventListener("load", transferComplete, false);
oReq.addEventListener("error", transferFailed, false);
oReq.addEventListener("abort", transferCanceled, false);
// This part for old ones
oReq.onreadystatechange = functionSwitch;
其中functionSwitch将调用正确的函数(将在updateProgress、transferComplete等之间进行选择),以避免双重代码


我见过有人使用Windows XP,可能任何附加的Listener都无法工作。看一看:。我没有通过addEventListener找到xmlhttprequest事件的具体列表。

你说得对
onreadystatechange
在每次状态更改时触发,但
addEventListener
侦听特定事件(
loadend
load
error
abort
)。