Javascript 主线程上的同步XMLHttpRequest已被弃用 我正在研究extjs框架。。 我有一个在extjs上运行的应用程序 每当我在浏览器中打开应用程序时,我都会看到以下内容 我控制台中的警告
主线程上的同步XMLHttpRequest已被弃用,因为它会对最终用户的体验产生有害影响。有关更多帮助,请检查Javascript 主线程上的同步XMLHttpRequest已被弃用 我正在研究extjs框架。。 我有一个在extjs上运行的应用程序 每当我在浏览器中打开应用程序时,我都会看到以下内容 我控制台中的警告,javascript,jquery,html,ajax,extjs,Javascript,Jquery,Html,Ajax,Extjs,主线程上的同步XMLHttpRequest已被弃用,因为它会对最终用户的体验产生有害影响。有关更多帮助,请检查 你们能告诉我怎么移除它吗 当我单击ext-all-debug-w-comments.js文件的警告时 并指向代码的以下部分 试一试{ xhr.open('GET',noCacheUrl,false); xhr.send(空); }捕获(e){ isCrossOriginRestricted=true; } var config = Loader.getConfig()
- 你们能告诉我怎么移除它吗
- 当我单击ext-all-debug-w-comments.js文件的警告时
- 并指向代码的以下部分 试一试{ xhr.open('GET',noCacheUrl,false); xhr.send(空); }捕获(e){ isCrossOriginRestricted=true; }
var config = Loader.getConfig(),
noCacheUrl = url + (config.disableCaching ? ('?' + config.disableCachingParam + '=' + Ext.Date.now()) : ''),
isCrossOriginRestricted = false,
xhr, status, onScriptError,
debugSourceURL = "";
scope = scope || Loader;
Loader.isLoading = true;
if (!synchronous) {
onScriptError = function() {
};
scriptElements[url] = Loader.injectScriptElement(noCacheUrl, onLoad, onScriptError, scope);
} else {
if (typeof XMLHttpRequest != 'undefined') {
xhr = new XMLHttpRequest();
} else {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
try {
xhr.open('GET', noCacheUrl, false);
xhr.send(null);
} catch (e) {
isCrossOriginRestricted = true;
}
status = (xhr.status === 1223) ? 204 :
(xhr.status === 0 && (self.location || {}).protocol == 'file:') ? 200 : xhr.status;
isCrossOriginRestricted = isCrossOriginRestricted || (status === 0);
if (isCrossOriginRestricted
) {
}
else if ((status >= 200 && status < 300) || (status === 304)
) {
// Debugger friendly, file names are still shown even though they're eval'ed code
// Breakpoints work on both Firebug and Chrome's Web Inspector
if (!Ext.isIE) {
debugSourceURL = "\n//@ sourceURL=" + url;
}
Ext.globalEval(xhr.responseText + debugSourceURL);
onLoad.call(scope);
}
else {
}
// Prevent potential IE memory leak
xhr = null;
}
},
var config = Loader.getConfig(),
noCacheUrl = url + (config.disableCaching ? ('?' + config.disableCachingParam + '=' + Ext.Date.now()) : ''),
isCrossOriginRestricted = false,
xhr, status, onScriptError,
debugSourceURL = "";
scope = scope || Loader;
Loader.isLoading = true;
if (!synchronous) {
onScriptError = function() {
};
scriptElements[url] = Loader.injectScriptElement(noCacheUrl, onLoad, onScriptError, scope);
} else {
if (typeof XMLHttpRequest != 'undefined') {
xhr = new XMLHttpRequest();
} else {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
try {
xhr.open('GET', noCacheUrl, false);
xhr.send(null);
} catch (e) {
isCrossOriginRestricted = true;
}
status = (xhr.status === 1223) ? 204 :
(xhr.status === 0 && (self.location || {}).protocol == 'file:') ? 200 : xhr.status;
isCrossOriginRestricted = isCrossOriginRestricted || (status === 0);
if (isCrossOriginRestricted
) {
}
else if ((status >= 200 && status < 300) || (status === 304)
) {
// Debugger friendly, file names are still shown even though they're eval'ed code
// Breakpoints work on both Firebug and Chrome's Web Inspector
if (!Ext.isIE) {
debugSourceURL = "\n//@ sourceURL=" + url;
}
Ext.globalEval(xhr.responseText + debugSourceURL);
onLoad.call(scope);
}
else {
}
// Prevent potential IE memory leak
xhr = null;
}
},
var config=Loader.getConfig(),
noCacheUrl=url+(config.disableCaching?(“?”+config.disableCachingParam+”=“+Ext.Date.now()):”),
isCrossOriginRestricted=false,
xhr、状态、OnScript错误、,
debugSourceURL=“”;
范围=范围| |加载器;
Loader.isLoading=true;
如果(!同步){
OnScript错误=函数(){
};
scriptElements[url]=Loader.injectScriptElement(noCacheUrl、onLoad、onScriptError、scope);
}否则{
if(XMLHttpRequest的类型!=“未定义”){
xhr=newXMLHttpRequest();
}否则{
xhr=newActiveXObject('Microsoft.XMLHTTP');
}
试一试{
xhr.open('GET',noCacheUrl,false);
xhr.send(空);
}捕获(e){
isCrossOriginRestricted=true;
}
状态=(xhr.status===1223)?204:
(xhr.status==0&&(self.location | |{}).protocol=='file:')?200:xhr.status;
isCrossOriginRestricted=isCrossOriginRestricted | |(状态==0);
如果(Iscrossorigin)受限
) {
}
else if((状态>=200&&status<300)| |(状态==304)
) {
//调试器友好,文件名仍然显示,即使它们是评估代码
//断点在Firebug和Chrome的Web检查器上都起作用
如果(!Ext.isIE){
debugSourceURL=“\n/@sourceURL=“+url;
}
Ext.globalEval(xhr.responseText+debugSourceURL);
onLoad.call(范围);
}
否则{
}
//防止潜在的IE内存泄漏
xhr=null;
}
},
此警告仅在ExtJs开发环境中的Chrome中显示。使用sencha cmd构建应用程序后,警告将不再显示。正如@Evan所指出的,这个警告看起来是善意的,你不必担心 存在警告这一事实不应该成为问题,因为它永远不会显示在已部署的应用程序中。如果您还没有使用sencha cmd,那么将其集成到您的开发周期中是绝对值得的
我知道这不是对这个问题的直接回答。就我自己而言,我想知道是否有可能彻底摆脱这一警告
xhr.open('GET',noCacheUrl,false)代码>删除false
。但是,您必须将try catch
语句下面的所有内容移动到事件处理程序中,如下面的xhr.addEventListener('load',function(){
…code…})
@xufox它让人困惑的是,您可以在下面的fiddle中更新代码吗?只有在使用动态加载时才会发生这种情况。这其实不是什么问题。像这样的。我无法验证它是否真的有效,因为我还没有完整的脚本。@Evantimboli但如何删除警告感谢您的回复…是否有可以帮助我们更好理解的演示,,,,对于sencha cmd,演示很简单:下载它,sencha生成应用程序
,然后sencha应用程序构建
,你有一个演示应用程序。你能分享一下简单易懂的工作吗(