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)