Javascript 主线程上的同步XMLHttpRequest已被弃用 我正在研究extjs框架。。 我有一个在extjs上运行的应用程序 每当我在浏览器中打开应用程序时,我都会看到以下内容 我控制台中的警告

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()

主线程上的同步XMLHttpRequest已被弃用,因为它会对最终用户的体验产生有害影响。有关更多帮助,请检查

  • 你们能告诉我怎么移除它吗
  • 当我单击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;
            }
        },
    
  • 你们能告诉我怎么防止它发生吗

  • 在该文件中提供我的代码

    /** *加载脚本文件,支持异步和同步方法 *@私人 */ loadScriptFile:函数(url、onLoad、onError、scope、synchronous){ 如果(isFileLoaded[url]){ 返回装载机; }

            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应用程序构建
,你有一个演示应用程序。你能分享一下简单易懂的工作吗(