Script externo JavaScript cargando extrañeza
Mantengo una aplicación de JavaScript heredada que tiene sus componentes divididos en 4 archivos JS.
Son "Default.aspx", "set1.aspx", "set2.aspx" y "set3.aspx". Las páginas ASPX escriben JS comprimido de múltiples archivos fuente (todos diferentes) pertenecientes a su conjunto respectivo y establecen el encabezado de tipo de contenido en "texto / javascript".
a aplicación se invoca agregando una referencia al primer conjunto y creando el objeto de entrada principal.
<script src="/app/default.aspx" type="text/javascript"></script>
<script type="text/javascript>
var ax;
// <body onload="OnLoad()">
function OnLoad() {
ax = new MyApp(document.getElementById("axTargetDiv"));
}
</script>
l final del primer conjunto de scripts (default.aspx) se encuentra el siguienteexact código:
function Script(src) {
document.write('<script src="' + src + '" type="text/javascript"></script>');
}
Script("set1.aspx?v=" + Settings.Version);
Lo que carga el segundo conjunto de scripts (set1.aspx). Y esto funciona sin ningún error en todos los principales navegadores (IE6-8 Firefox Safari Opera Chrome).
Sin embargo, como he estado trabajando en este script por algún tiempo, me gustaría simplificar las llamadas a funciones en muchos lugares y he insertado erróneamente la función de script anterior, dando como resultado el siguiente código:
document.write('<script src="set1.aspx?v=' + Settings.Version + '" type="text/javascript"></script>');
Que, cuando se prueba con una página de prueba, ahora arroja el siguiente error en todos los navegadores:
MyApp is not defined.
Esto sucede en la línea:ax = new MyApp(...
como depurador de Visual Studio JS Firebug lo informa.
He probado varios métodos en las primeras 4 respuestas publicadas a esta pregunta en vano. Lo único que permitirá que MyApp se cargue correctamente es solo colocando el código real de "agregar script" dentro de una función (es decir, eldocument.write('script')
línea):
Si pongo ladocument.write
línea dentro de una función, funciona, de lo contrario, no lo hace. ¿Qué esta pasando
Dividir y / o escapar del texto del script no funciona.