Ciao a tutti,
ho uno script che aggiunge dinamicamente all'HEAD del documento una serie di .js e .css prendendoli da un file JSON fatto in questo modo:
I metodi commentati sono altri che ho provato.codice://If file has a .js extension, creates a <script> element if ( config [ folder ].files [ file ].slice ( -3 ) == '.js' ) { loadingFile = document.createElement ( 'SCRIPT' ); loadingFile.setAttribute ( 'type', 'text/javascript' ); loadingFile.setAttribute ( 'src', path ); //If file has a .css extension, creates a <link> element } else if ( config [ folder ].files [ file ].slice ( -4 ) == '.css' ) { loadingFile = document.createElement ( 'LINK' ); loadingFile.setAttribute ( 'type', 'text/css' ); loadingFile.setAttribute ( 'rel', 'stylesheet' ); //Adds a unique identifier to stylesheet link to avoid browser caching loadingFile.setAttribute ( 'href', path + '?reload=' + new Date ().getTime () ); } $ ( 'head' ).append ( loadingFile ); //$ ( loadingFile ).appendTo ( 'head' ); //$ ( 'head' ).prepend ( loadingFile ); //$ ( loadingFile ).prependTo ( 'head');
Premetto che l'applicazione funziona correttamente quindi i percorsi dei file sono corretti ed effettivamente vengono aggiunti al documento.
Dopo le aggiunte vedo nel DOM tutti i css ma non i js, a parte la libreria di jQuery che è aggiunta esplicitamente nell'HTML:
Il problema è che l'applicazione comprende un MVC per la gestione degli errori che riporta anche il riferimento al file e alla riga nel quale si è riscontrato l'errore e gli script aggiunti non vengono correttamente referenziati.codice:<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Archon framework</title> <script type="text/javascript" src="lib/ext/jquery.js"></script> <script type="text/javascript" src="archon.js"></script> <script type="text/javascript"> $( window ).load ( function () { Archon = new archon (); } ); </script> <link type="text/css" rel="stylesheet" href="res/css/jqueryui.css?reload=1358326823868"> <link type="text/css" rel="stylesheet" href="res/css/foresight.css?reload=1358326823872"> <link type="text/css" rel="stylesheet" href="res/css/flexgrid.css?reload=1358326823878"> <link type="text/css" rel="stylesheet" href="res/css/archon.css?reload=1358326823886"> <link type="text/css" rel="stylesheet" href="res/css/common.css?reload=1358326823893"> <link rel="shortcut icon" href="res/img/favicon.ico"> [... altri script aggiunti da chrome ...] </head>
Per essere più chiaro questo è quello che si vede se genero un errore in un js che includo esplicitamente:
Mentre questo è quello che si vede se lo stesso js lo includo dinamicamente:codice:@ Archon/archon.js on line 239 Uncaught Error: Test Stacktrace: 234 //Gets browser performance data 235 perfData = Utils.getPerformance (); 236 237 //Adds a keypress listener to the document 238 $ ( document ).bind ( 'keydown', Utils.manageKeys ); 239 throw new Error ( 'Test' ); 240 } 241 242 /* 243 * Method : loadConfiguration
Se i file vengono aggiunti con .appendChild li vedo nel DOM e anche l'MVC li richiama correttamente ma subentrano altri problemi quindi dovrei tenere la linea jQuery.codice:@ Archon/ on line 49 Uncaught Error: Test Stacktrace: 49 Script file cannot be referenced.
Qualche idea?![]()
Grazie in anticipo![]()

Rispondi quotando