Ruben Reusser created SLING-8283: ------------------------------------ Summary: httpGet in system/sling.js uses depricated main thread blocking code Key: SLING-8283 URL: https://issues.apache.org/jira/browse/SLING-8283 Project: Sling Issue Type: Improvement Components: Best practices Reporter: Ruben Reusser
the sling starter homepage throws the following error in the browser console. sling.js:75 [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check [https://xhr.spec.whatwg.org/.|https://xhr.spec.whatwg.org/] As the error mentions this is due to the fact that sling is using main thread blocking calls in /system/sling.js - this is generally not recommended anymore as it blocks the ability for a user to interact with the browser The problem can easily be solved by using callbacks instead of main thread blocking code. by altering Sling.httpGet to support callbacks this change can be made gradually over time without a break in backwards compatibility {code:java} /** * HTTP GET XHR Helper * @param {String} url The URL * @param {Function} optional second parameter for async version of the method. * The callback will get the XHR object, method returns immediately * @return the XHR object, use .responseText for the data * @type String */ Sling.httpGet = function(url, callback) { var httpcon = Sling.getXHR(); if (httpcon) { if(callback) { httpcon.onload = function() { callback(this); }; httpcon.open('GET', url); httpcon.send(null); } else { httpcon.open('GET', url, false); httpcon.send(null); return httpcon; } } else { return null; } } {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)