以下代码创建内容为undefined的警报:

// ==UserScript==
// @name     Unnamed Script 188765
// @version  1
// @grant    GM.xmlHttpRequest
// @include  http*//markasoftware.com/*
// ==/UserScript==

alert(typeof GM.xmlHttpRequest({
  url: 'https://google.com',
  synchronous: true,
  method: 'GET',
}));


基于documentation,我希望使用synchronous选项使调用返回响应object。但是,它的行为与异步调用相同。 onload处理程序仍然有效。 synchronous选项是否已禁用?还有其他方法可以同步发出跨域请求吗?

最佳答案

说使用同步模式时返回值将不同的文档是错误的。只需设置在onload函数之外使用的变量。

let returnData;
GM.xmlHttpRequest({
  url: 'https://google.com',
  synchronous: true,
  method: 'GET',
  onload: function(response) {
    returnData = response;
  }
}));
alert(returnData);

关于javascript - GM.xmlHttpRequest`synchronous`选项不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57661893/

10-10 13:11