[Javascript] Caricamento asincrono file esterno

colomber

Utente Attivo
4 Dic 2012
232
1
18
Sto cercando di velocizzare il caricamento di una pagina che contiene la barra dei cookie, ho inserito async al file esterno <script async src="cookiechoices.js"></script> ma facendo cosi la barra dei cookie non viene caricata qualcuno può aiutarmi?

richiamo il file esterno con il codice della barra dei cookie:

<script src="cookiechoices.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function(event) {
cookieChoices.showCookieConsentDialog('Your message for visitors here.',
'close message', 'learn more', 'http://example.com');
});
</script>




questo invece è il contenuto del file cookiechoices.js


(function(window) {

if (!!window.cookieChoices) {
return window.cookieChoices;
}

var document = window.document;
// IE8 does not support textContent, so we should fallback to innerText.
var supportsTextContent = 'textContent' in document.body;

var cookieChoices = (function() {

var cookieName = 'displayCookieConsent';
var cookieConsentId = 'cookieChoiceInfo';
var dismissLinkId = 'cookieChoiceDismiss';

function _createHeaderElement(cookieText, dismissText, linkText, linkHref) {
var butterBarStyles = 'position:fixed;width:100%;background-color:#eee;' +
'margin:0; left:0; top:0;padding:4px;z-index:1000;text-align:center;';

var cookieConsentElement = document.createElement('div');
cookieConsentElement.id = cookieConsentId;
cookieConsentElement.style.cssText = butterBarStyles;
cookieConsentElement.appendChild(_createConsentText(cookieText));

if (!!linkText && !!linkHref) {
cookieConsentElement.appendChild(_createInformationLink(linkText, linkHref));
}
cookieConsentElement.appendChild(_createDismissLink(dismissText));
return cookieConsentElement;
}

function _createDialogElement(cookieText, dismissText, linkText, linkHref) {
var glassStyle = 'position:fixed;width:100%;height:100%;z-index:999;' +
'top:0;left:0;opacity:0.5;filter:alpha(opacity=50);' +
'background-color:#ccc;';
var dialogStyle = 'z-index:1000;position:fixed;left:50%;top:50%';
var contentStyle = 'position:relative;left:-50%;margin-top:-25%;' +
'background-color:#fff;padding:20px;box-shadow:4px 4px 25px #888;';

var cookieConsentElement = document.createElement('div');
cookieConsentElement.id = cookieConsentId;

var glassPanel = document.createElement('div');
glassPanel.style.cssText = glassStyle;

var content = document.createElement('div');
content.style.cssText = contentStyle;

var dialog = document.createElement('div');
dialog.style.cssText = dialogStyle;

var dismissLink = _createDismissLink(dismissText);
dismissLink.style.display = 'block';
dismissLink.style.textAlign = 'right';
dismissLink.style.marginTop = '8px';

content.appendChild(_createConsentText(cookieText));
if (!!linkText && !!linkHref) {
content.appendChild(_createInformationLink(linkText, linkHref));
}
content.appendChild(dismissLink);
dialog.appendChild(content);
cookieConsentElement.appendChild(glassPanel);
cookieConsentElement.appendChild(dialog);
return cookieConsentElement;
}

function _setElementText(element, text) {
if (supportsTextContent) {
element.textContent = text;
} else {
element.innerText = text;
}
}

function _createConsentText(cookieText) {
var consentText = document.createElement('span');
_setElementText(consentText, cookieText);
return consentText;
}

function _createDismissLink(dismissText) {
var dismissLink = document.createElement('a');
_setElementText(dismissLink, dismissText);
dismissLink.id = dismissLinkId;
dismissLink.href = '#';
dismissLink.style.marginLeft = '24px';
return dismissLink;
}

function _createInformationLink(linkText, linkHref) {
var infoLink = document.createElement('a');
_setElementText(infoLink, linkText);
infoLink.href = linkHref;
infoLink.target = '_blank';
infoLink.style.marginLeft = '8px';
return infoLink;
}

function _dismissLinkClick() {
_saveUserPreference();
_removeCookieConsent();
return false;
}

function _showCookieConsent(cookieText, dismissText, linkText, linkHref, isDialog) {
if (_shouldDisplayConsent()) {
_removeCookieConsent();
var consentElement = (isDialog) ?
_createDialogElement(cookieText, dismissText, linkText, linkHref) :
_createHeaderElement(cookieText, dismissText, linkText, linkHref);
var fragment = document.createDocumentFragment();
fragment.appendChild(consentElement);
document.body.appendChild(fragment.cloneNode(true));
document.getElementById(dismissLinkId).onclick = _dismissLinkClick;
}
}

function showCookieConsentBar(cookieText, dismissText, linkText, linkHref) {
_showCookieConsent(cookieText, dismissText, linkText, linkHref, false);
}

function showCookieConsentDialog(cookieText, dismissText, linkText, linkHref) {
_showCookieConsent(cookieText, dismissText, linkText, linkHref, true);
}

function _removeCookieConsent() {
var cookieChoiceElement = document.getElementById(cookieConsentId);
if (cookieChoiceElement != null) {
cookieChoiceElement.parentNode.removeChild(cookieChoiceElement);
}
}

function _saveUserPreference() {
// Set the cookie expiry to one year after today.
var expiryDate = new Date();
expiryDate.setFullYear(expiryDate.getFullYear() + 1);
document.cookie = cookieName + '=y; expires=' + expiryDate.toGMTString();
}

function _shouldDisplayConsent() {
// Display the header only if the cookie has not been set.
return !document.cookie.match(new RegExp(cookieName + '=([^;]+)'));
}

var exports = {};
exports.showCookieConsentBar = showCookieConsentBar;
exports.showCookieConsentDialog = showCookieConsentDialog;
return exports;
})();

window.cookieChoices = cookieChoices;
return cookieChoices;
})(this);
 
Discussioni simili
Autore Titolo Forum Risposte Data
J [Javascript] Inserire un caricamento con animazione prima dell'esecuzione di un'azione Javascript 1
M [Javascript] Caricamento menu da file esterno Javascript 8
M [javascript] Aggiungere eventi al caricamento Javascript 0
MarcoGrazia [Javascript] Sistema di caricamento dinamico in base allo scrolling Javascript 3
MarcoGrazia [Javascript] Loader fino a caricamento della pagina Javascript 1
G [Javascript] rendere visibile un iframe dopo l'avvenuto caricamento del video che esso contiene Javascript 4
E [Javascript] div "si sposta" al caricamento della pagina web Javascript 2
trattorino [Javascript] caricamento immagine con effetto fade Javascript 1
A Caricamento dei Javascript nel window.onload Javascript 3
J Javascript Form Caricamento Immagine Javascript 2
M Upload immagine con javascript problemi con FormData() Javascript 1
L countdown multiplo javascript Javascript 1
S Problemi Javascript + Aruba Javascript 2
M Inviare un file su un server remoto con JavaScript Javascript 0
T a href="javascript:;" Javascript 0
F Creare elementi html con javascript Javascript 4
A pulsante di update campo mysql con javascript Javascript 2
8 Javascript - PDF Form Javascript 0
B javascript per problemi con pdf e Safari Javascript 0
N informazione javascript Programmazione 0
I Eecuzione di javascript in ciclo foreach php. PHP 7
P javascript:document.forms Javascript 7
S Consiglio esercizio Javascript Javascript 2
MarcoGrazia Aggiungere o rimuovere classi in javascript Javascript 1
P Passaggio id php a javascript PHP 6
E lettura da un Database con Javascript jQuery 2
V TRIS in javascript Javascript 1
IClaude Funzione Javascript Javascript 8
Alex_70 Javascript date color Javascript 3
F Convertire JavaScript per la compatibilità nei browser obsoleti Javascript 0
I Passare dei parametri in javascript PHP 0
Shyson Meglio Javascript o HTML? Javascript 4
M Chiamare pagina php da javascript Javascript 8
M Errore JavaScript per php [objeto HTMLParagraphElement] PHP 0
D Javascript per il download dei dati Javascript 0
grgfede Problema javascript con aruba Javascript 1
webmachine [PHP] [JAVASCRIPT] Form strano in HTML PHP PHP 1
W Modificare il Type di un Input box in javascript ovunque si trovi Javascript 0
I javascript come caricare una pagina sopra quella corrente in automatico Javascript 2
L [Javascript] Problema salvataggio dati in db Javascript 1
max1974 [Javascript] Grafico chartjs con dati da J.ajax Javascript 3
G Quiz Javascript Javascript 4
A [Javascript] Scrittura su più campi contemporaneamente Javascript 19
F classic asp popolare combo box javascript Presentati al Forum 1
claudio_lorenzo [Javascript] aiuto su jquery per calcolo altezze dom Javascript 1
F [Javascript] comando innerHTML non funziona Javascript 5
alexice51 proggrammi per scrivere in javascript? Javascript 3
max1974 [Javascript] Accordion aria-exspanded Javascript 0
D [Javascript] salvare immagine canvas - paypal Javascript 0
O [Javascript] Conflitto Jquery: forse... Javascript 0

Discussioni simili