我一直在向控制台添加日志,以检查不同变量的状态,而不使用Firefox调试器。
然而,在我在main.js文件中添加console.log的许多地方,我收到了以下错误,而不是我给自己的可爱的手写消息:
主线程上的同步XMLHttpRequest已弃用,因为它会对最终用户的体验产生不利影响。更多帮助http://xhr.spec.whatwg.org/
我可以在我的代码使用中添加哪些不会导致此错误的console.log替代品或包装器?
我“做错了”吗?
我一直在向控制台添加日志,以检查不同变量的状态,而不使用Firefox调试器。
然而,在我在main.js文件中添加console.log的许多地方,我收到了以下错误,而不是我给自己的可爱的手写消息:
主线程上的同步XMLHttpRequest已弃用,因为它会对最终用户的体验产生不利影响。更多帮助http://xhr.spec.whatwg.org/
我可以在我的代码使用中添加哪些不会导致此错误的console.log替代品或包装器?
我“做错了”吗?
当前回答
这种情况发生在我很懒的时候,我将脚本标记作为返回内容的一部分。是这样的:
部分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/
其他回答
Visual Studio 2015/2017的实时调试器正在注入包含弃用调用的代码。
警告消息可能是由于主线程中的XMLHttpRequest请求将async标志设置为false。
https://xhr.spec.whatwg.org/ synchronous:
Synchronous XMLHttpRequest outside of workers is in the process of being removed from the web platform as it has detrimental effects to the end user's experience. (This is a long process that takes many years.) Developers must not pass false for the async argument when the JavaScript global environment is a document environment. User agents are strongly encouraged to warn about such usage in developer tools and may experiment with throwing an InvalidAccessError exception when it occurs.
未来的方向是只允许工作线程中的xmlhttprequest。这条消息意在发出这方面的警告。
这种情况发生在我很懒的时候,我将脚本标记作为返回内容的一部分。是这样的:
部分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/
在MVC应用程序中,我得到了这个警告,因为我用一个返回View()而不是PartialView()的方法打开了一个Kendo窗口。View()试图再次检索页面的所有脚本。
为避免此警告,请不要使用:
async: false
在任何$.ajax()调用中。这是XMLHttpRequest唯一被弃用的特性。
默认为
async: true
jQuery已经弃用了同步XMLHTTPRequest