我一直在向控制台添加日志,以检查不同变量的状态,而不使用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替代品或包装器?
我“做错了”吗?
当前回答
像@Nycen一样,我也得到了这个错误,因为一个链接到Cloudfare。我的是Select2插件。
我刚把它拆了
src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.min.js"
错误消失了。
其他回答
我也面临着同样的问题,但能够通过放置async: true来修复它。我知道它默认为true,但当我显式地写它时,它是有效的
$.ajax({
async: true, // this will solve the problem
type: "POST",
url: "/Page/Method",
contentType: "application/json",
data: JSON.stringify({ ParameterName: paramValue }),
});
这个问题在我的案例中得到了解决。
JS
$.ajaxPrefilter(function( options, original_Options, jqXHR ) {
options.async = true;
});
这个答案被插入到这个链接中
https://stackoverflow.com/questions/28322636/synchronous-xmlhttprequest-warning-and-script
这种情况发生在我很懒的时候,我将脚本标记作为返回内容的一部分。是这样的:
部分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/
在我的情况下,这是由Cloudflare提供的“CDNJS选择”应用程序中的灵活脚本引起的。
根据Cloudflare的说法,“该应用程序已于2015年3月弃用”。我把手机关掉,留言立刻就消失了。
您可以通过访问https://www.cloudflare.com/a/cloudflare-apps/yourdomain.com访问这些应用程序
注意:这是我在这个线程上的答案的副本同步XMLHttpRequest警告和<脚本>(我在寻找解决方案时访问了这两个)
我在以下情况下得到这样的警告:
1) file1包含<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>. js"页面有输入字段。我在输入字段中输入一些值,然后点击按钮。Jquery向外部php文件发送输入。
2)外部PHP文件也包含jquery,在外部PHP文件中我还包括<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>. js。因为如果这样我就会收到警告。
从外部php文件中删除<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>,并且没有警告。
正如我所理解的加载第一个文件(file1),我加载jquery-1.10.2.js,作为页面不重新加载(它发送数据到外部php文件使用jquery $.post),然后jquery-1.10.2.js继续存在。所以不需要再加载了。