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

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

主线程上的同步XMLHttpRequest已弃用,因为它会对最终用户的体验产生不利影响。更多帮助http://xhr.spec.whatwg.org/

我可以在我的代码使用中添加哪些不会导致此错误的console.log替代品或包装器?

我“做错了”吗?


当前回答

我用以下步骤来解决这个问题:

检查您的CDN脚本并在本地添加它们。 将脚本包含移动到标题部分。

其他回答

这种情况发生在我很懒的时候,我将脚本标记作为返回内容的一部分。是这样的:

部分HTML内容:

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

至少在我的例子中,如果通过xhr返回这样的HTML内容,就会导致jQuery调用该脚本。该调用带有一个async标志false,因为它假定您需要继续加载脚本。

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

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

例子

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

http://jsfiddle.net/49tkL0qd/

我在《ZF2》里也遇到过。 我试图加载模式内容,但我忘记禁用布局之前。

So:

$viewModel = new ViewModel();
$viewModel->setTerminal(true);
return $viewModel;

我得到这个异常时,我设置url在查询像“example.com/files/text.txt”。我把url改为“http://example.com/files/text.txt”,这个异常消失了。

这个问题是2014年提出的,现在是2019年,所以我想寻找更好的选择是件好事。

你可以简单地在Javascript中使用fetch api,它为你提供了更多的灵活性。

例如,请参阅此代码

fetch('./api/some.json')
    .then((response) => {
        response.json().then((data) => { 
            ... 
        });
    })
    .catch((err) => { ... });

Visual Studio 2015/2017的实时调试器正在注入包含弃用调用的代码。