当前位置: 首页 > 知识库问答 >
问题:

JavaScript控制台。日志导致错误:“主线程上的同步XMLHttpRequest已弃用…”

隗瑞
2023-03-14

我一直在向控制台添加日志以检查不同变量的状态,而无需使用 Firefox 调试器。

然而,在我将< code>console.log添加到< code>main.js文件的许多地方,我收到了以下错误,而不是我写给自己的可爱的小消息:

主线程上的同步XMLHttp请求已被弃用,因为它对最终用户的体验有不利影响。如需更多帮助http://xhr.spec.whatwg.org/

<code>控制台的替代品或包装器是什么。log我可以添加到不会导致此错误的代码中吗?

我“做错了”吗?

共有3个答案

卫才哲
2023-03-14

我也面临着同样的问题,但能够通过放置async: true来修复它。我知道这在默认情况下是正确的,但是当我显式地写它时,它是有效的

$.ajax({
   async: true,   // this will solve the problem
   type: "POST",
   url: "/Page/Method",
   contentType: "application/json",
   data: JSON.stringify({ ParameterName: paramValue }),
});
薛文斌
2023-03-14

警告消息可能是由于主线程中的 XMLHttpRequest 请求将异步标志设置为 false。

https://xhr.spec.whatwg.org/#synchronous-标志:

工作人员之外的同步XMLHttp请求正在从Web平台中删除,因为它对最终用户的体验有不利影响。(这是一个需要多年时间的漫长过程。)当JavaScript全局环境是文档环境时,开发人员不得为异步参数传递false。强烈建议用户代理在开发人员工具中警告此类使用情况,并可能在发生时尝试抛出InvalidAccessError异常。

未来的方向是在工作线程中只允许XMLHttpRequests。这一信息旨在对此发出警告。

荀金鹏
2023-03-14

我在偷懒时遇到了这种情况,在返回的内容中包含了一个脚本标记。像这样的:

部分HTML内容:

<div> 
 SOME CONTENT HERE
</div>
<script src="/scripts/script.js"></script> 

至少在我的例子中,如果你通过xhr返回这样的超文本标记语言内容,你将导致jQuery调用以获取该脚本。该调用发生时带有异步标志false,因为它假定你需要脚本才能继续加载。

在这种情况下,您最好查看某种绑定框架并返回JSON对象,或者根据您的后端和模板,您可以更改加载脚本的方式。

你也可以使用 jQuery 的 getScript() 来获取相关的脚本。这是一个小提琴,它只是jQuery示例的直接副本,但是当以这种方式加载脚本时,我没有看到任何警告。

实例

<script>
var url = "/scripts/script.js";
$.getScript(url);
</script>

http://jsfiddle.net/49tkL0qd/

 类似资料:
  • 问题内容: 像许多其他网站一样,我的网站使用的是jQuery。打开开发人员工具时,我看到一条警告,指出XMLHTTPRequest是 不推荐使用,因为它对最终用户的体验有不利影响。 我继续阅读了部分文档,但这是相当技术性的。有人可以简单地解释从XMLHTTPRequest转换为WHATWG的后果吗?它说发生在2012年。 此外,该文档还说,正在从Web平台删除工作人员外部的Synchronous

  • 我已经创建了一个对我来说很好的Webpack构建——它有一个用于热重新加载的dev服务器,还有一个运行模板html文件并集成文件。 这一切都很好,但当我在我的开发服务器上工作时,控制台会给我如下错误消息: 它引用了是错误的来源,而不是我正在使用的组件,这使得很难追踪错误的来源。 据控制台所知,我知道它是包含错误的文件,但如何让控制台记录预绑定代码?(例如,) 提前感谢。

  • 正如logback的文档所说,大多数appender本质上是同步的,但是如果我们将appender包装在异步appender中,那么线程将把数据推送到BlockingQueue中,如果有,比如说X-logback线程将从BlockingQueue获取数据并将其追加。这就是我对它的基本理解。 尝试使用JstackThread转储来测试这个。但是空手返回,没有回退线程的线索。 作为参考,请检查下面lo

  • 问题内容: 我想建立一个自动化测试,所以我必须知道chrome控制台中出现的错误。 是否有一个选项来获取出现在控制台中的错误行? 为了查看控制台:右键单击页面中的某处,单击“检查元素”,然后转到“控制台”。 问题答案: 我不知道C#,但这是可以完成此工作的Java代码,希望您可以将其转换为C# 注意上面代码中的setUp方法。我们使用LoggingPreferences对象来启用日志记录。日志有几

  • 我想建立一个自动化测试系统,所以我必须知道chrome控制台中出现的错误。 有一个选项可以获取控制台中出现的错误行? 要查看控制台:右键单击页面中的某个位置,单击“检查元素”,然后转到“控制台”。

  • 问题内容: 我想在量角器测试中输出div的文本,到目前为止,我有: 但这输出 我尝试了“ toString()”,结果相同。 有没有办法将文本输出到控制台? 问题答案: 和其他大多数量角器方法都返回承诺。您想将您的陈述放入承诺解决方案中: 使用新的量角器语法: