0

以下代码使用内容创建警报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',
}));

根据文档,我希望synchronous可以选择使调用返回响应object。然而,它的行为方式与异步调用相同;处理onload程序仍然有效。该synchronous选项是否被禁用?还有其他方法可以同步发出跨域请求吗?

4

1 回答 1

2

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

let returnData;
GM.xmlHttpRequest({
  url: 'https://google.com',
  synchronous: true,
  method: 'GET',
  onload: function(response) {
    returnData = response;
  }
}));
alert(returnData);
于 2019-08-26T18:06:45.907 回答