w3schools tag sirve que para data javascript innerhtml noscript

javascript - tag - pdf w3schools



Acceder a los contenidos de<noscript> con Javascript (5)

<noscript><div id="example">I want to get this innerHTML</div></noscript> <script type="text/javascript"> alert($(''example'').innerHTML);</script>

Este fragmento de código JavaScript simplemente devuelve una cadena vacía. ¿Hay alguna forma de obtener el contenido de un nodo de noscript?

ps estoy usando prototipo en este proyecto en particular


Al probar con Firefox 3.0.7, Safari 3.2.2 y MSIE 7.0.5730.13 (todo en WinXP SP3), parece que todo lo que se encuentra dentro de las etiquetas <noscript> se omite completamente del árbol DOM.

Sin embargo, puede ser posible acceder al elemento <noscript> sí, y luego usar métodos DOM para cambiar sus elementos secundarios.


De la especificación de HTML 4.0 :

El elemento NOSCRIPT permite a los autores proporcionar contenido alternativo cuando no se ejecuta un script. El contenido de un elemento NOSCRIPT solo debe ser representado por un agente de usuario que tenga en cuenta los scripts en los siguientes casos:

  • El agente de usuario no está configurado para evaluar las secuencias de comandos.
  • El agente de usuario no admite un lenguaje de script invocado por un elemento SCRIPT anteriormente en el documento.

Me parece que esto implica que todos los contenidos de la etiqueta NOSCRIPT (en este caso, su div) se ignoran por completo si las secuencias de comandos están habilitadas en el navegador. ¿Ha verificado que el div de "ejemplo" es accesible a través del DOM en su caso?


No estoy seguro sobre el prototipo, pero esto funciona en Chrome con jQuery:

$(''noscript'').before($(''noscript'').text());


Pruebe $ ($ ("noscript"). Text ()) con jQuery.


Si las secuencias de comandos están habilitadas, el elemento noscript se define como que solo contiene texto , aunque debe ser un texto analizable , con algunas restricciones de contenido. Teniendo eso en cuenta, deberías poder extraer el texto, analizarlo y luego encontrar el elemento deseado. Un ejemplo rudimentario de esto sigue:

var nos = document.getElementsByTagName("noscript")[0]; // in some browsers, contents of noscript hang around in one form or another var nosHtml = nos.textContent||nos.innerHTML; if ( nosHtml ) { var temp = document.createElement("div"); temp.innerHTML = nosHtml; // lazy man''s query library: add it, find it, remove it document.body.appendChild(temp); var ex = document.getElementById("example"); document.body.removeChild(temp); alert(ex.innerHTML); }

Tenga en cuenta que cuando escribí originalmente esta respuesta, lo anterior falló en Google Chrome; El acceso al contenido de Noscript parece tener un mejor soporte en estos días, pero aún me parece un caso de ventaja que es quizás algo más probable que otros elementos exhiban errores. Lo evitaría si tuviera otras opciones.