2011-07-10 8 views
5

Mi página tiene una etiqueta:etiqueta script con type = "text/html" y src = "..." cargado, pero ignorado por jQuery

 
    <script id='header' src='/Templates/Shared/Header.tmpl.html' type='text/html'></script> 

Firebug me dice que Firefox 5 está solicitando este recurso . En la pestaña HTML, puedo navegar al elemento script y ver que contiene el contenido de /Template/Shared/Header.tmpl.html.

jQuery, sin embargo, insiste en que la etiqueta del script está vacía. $ ('# header'). html() devuelve una cadena vacía. No entiendo por qué.

Sí, puedo cargar el archivo con $ .get() y usar $ ('# header'). Html (data) para establecer los contenidos. Entonces puedo usarlo como era de esperar. Obviamente, esto genera una segunda solicitud, que me gustaría evitar.

+0

Me pregunto si esto es jQuery siendo estricto. ¿Has probado usar .text() en lugar de .html()? No estoy seguro de que funcione, porque no sé si la etiqueta del script es en realidad parte del DOM. Creo que el complemento de metadatos puede acceder a la información dentro de las etiquetas de script, pero no lo he usado personalmente. http://plugins.jquery.com/project/metadata –

+0

.text() o .html() no hace ninguna diferencia en este caso, pero su idea de no estar en DOM parece válida. Ninguno de los scripts externos tiene contenido. Estoy buscando en el complemento de metadatos ahora. ¡Gracias! –

+0

Encontré una pregunta similar, sin una buena respuesta: http://stackoverflow.com/questions/148441/how-can-i-get-the-content-of-the-file-specified-as-the-src-of -a-script-tag –

Respuesta

5

Sé que esto es viejo, pero la respuesta es simple. La etiqueta de secuencia de comandos simplemente no contiene ningún texto o html.

<script id='...' src='...' type='...'></script>

No hay elementos o texto dentro de la etiqueta. El script se solicitará y cargará en la memoria (si el tipo de script tiene un controlador), pero el texto real no se insertará en el DOM.

+0

existe entonces una propiedad de la ¿Elemento dom al que puede acceder donde se almacena el resultado de la solicitud? algo así como 'document.getElementById (" myHtmlScript "). contents'? –

+0

Ha pasado un tiempo desde que estudié las aplicaciones DOM en profundidad. ¿Qué está tratando de lograr? Tradicionalmente hablando, si quieres cargar algún otro activo de uri como texto en una variable, usarías ajax o jsonp (que básicamente es solo cargar un script que luego se ejecuta y agrega texto al documento). ¿Estás tratando de lograr algo en particular? –

+0

tiene perfecto sentido que si ** A ** es verdadero y ** B ** es cierto que ** A + B ** también sería cierto, ** A ** es el hecho de que '

1

Este es un viejo problema, pero aún existe en Firefox. Yo uso una solución para ello:

function getHtml(selector) { 
    var $element = $(selector); 
    var html = $element.html(); 

    if (!html) { 
    // copy all the children elements to a dummy DIV, which, unlike the SCRIPT have no problem providing the html in Firefox 
    html= $('<div />').append($element.children().clone()).html(); 
    } 
    return html; 
} 
Cuestiones relacionadas