jQuery y document.write

Tengo el siguiente script:

<script type="text/javascript">
$(document).ready(function(){ 
    document.write("<script type=\"text/javascript\" src=\"http://site.com/script.js\"><\/script>");
});
</script>

Cuando pongo esto en la página, redirige al script, que no quiero.

Quiero repetir este archivo javascript donde inserto el código anterior, para que se cargue una vez que la página tenga. Actualmente, cuando estoy usando el script anterior, solo muestra el contenido del archivo javascript y no toda la página.

Quiero que lo coloque en la página donde coloco este script.

Estoy haciendo esto para que la secuencia de comandos a la que llama se cargue básicamente en su lugar una vez que la página lo ha hecho, ya que actualmente esta secuencia de comandos hace que la página se mantenga mientras se carga.

Gracias por su atención.

preguntado el 08 de noviembre de 11 a las 10:11

Obviamente, no quiero que la página se redirija al archivo javascript, quiero que escriba el script dentro de la página. Editaré mi pregunta y la explicaré en términos sencillos. -

Hay un error de sintaxis con las comillas al cerrar el src parámetro: ¿es solo un error tipográfico? -

No son términos de laicos lo que estaba insinuando. No hiciste una pregunta. Ese era mi punto. -

@RoryMcCrossan sí, eso es solo un error tipográfico en el ejemplo, mi error. -

5 Respuestas

Tratar:

$(document).ready(function(){ 
    $('body').append("<script type=\"text/javascript\" src=\"http://site.com/script.js\"><\/script>");
});

document.writeadd al documento cuando se llama antes de que se cargue el documento, pero después de eso, reemplazará el contenido existente.

respondido 08 nov., 11:14

Intenté esto antes de publicar y tampoco parece funcionar. - Latox

@Latox: Funciona para mi; compruebe el visor de red en las herramientas del desarrollador para ver la solicitud que se está realizando. - Matt

La herramienta de red carga un script que contiene: document.writeln (' '); - Latox

@Latox: Bueno, entonces necesitas publicar el código que estás usando, porque esa línea de código ha aparecido de la nada. - Matt

No, no ha aparecido de la nada. Es lo que está contenido dentro del script.js en la pregunta, no controlo este script. Me lo proporciona un proveedor de publicidad. - Latox

Prueba esto:

$(function() {

    $.getScript("http://site.com/script.js");
});

$ .getScript también le permite tener una función que se llama después de que el script se ejecuta correctamente.

respondido 08 nov., 11:14

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
    </head>
    <body>
        <!-- content here... -->
    </body>
    <script>
        $.getScript('http://site.com/script.js');
    </script>
</html>

Coloque la secuencia de comandos al final de su página para "aplazar" la ejecución de la secuencia de comandos. Utilice jQuery.getScript () para recuperar y ejecutar el script.

EDITAR Para evitar dudas, consulta agregada. Obviamente, se necesita temprano para permitir $.getScript trabajar.

respondido 08 nov., 11:15

Este podría ser un enfoque más limpio:

$(document).ready(function(){ 
    $('<script>')
        .attr('type', 'text/javascript')
        .attr('src', 'http://www.example.com/script.js')
        .appendTo('body');
});

o:

$(document).ready(function(){ 
    $('<script>')
        .attr({'type': 'text/javascript', 'src': 'http://www.example.com/script.js'})
        .appendTo('body');
});

respondido 25 nov., 14:12

Para desacoplar la carga de la página principal de la carga del anuncio, puede colocar el anuncio en su propia página en un iframe o, de manera similar, descargar el archivo de secuencia de comandos con AJAX y ejecutarlo cada vez que baje. Si el primero no es adecuado, debido a que hace referencia a URI o lo que sea, el segundo le da cierta flexibilidad: puede usar el reemplazo de cadena para reescribir "document.write" en otra cosa, o quizás reemplazarlo temporalmente como "document.write = custom_function; "

respondido 08 nov., 11:14

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.