No creo que hay una solución simple para simplemente "agarrar fuente original", ya que tendrá que ser algo que se suministra por el navegador . Pero, si solo está interesado en hacer esto para una sección de la página, entonces tengo una solución para usted.
Usted puede envolver la sección de interés dentro de un script "congelada":
<script id="frozen" type="text/x-frozen-html">
El atributo type
acabo de componer, pero va a forzar al navegador a ignorar todo dentro de él. A continuación, agregue otra etiqueta de secuencia de comandos (javascript adecuado esta vez) inmediatamente después de esta: la secuencia de comandos "descongelar". Esta secuencia de comandos de descongelación obtendrá la secuencia de comandos congelada por ID, tomará el texto dentro de ella y realizará un document.write
para agregar los contenidos reales a la página. Siempre que necesite la fuente original, se capturará como texto dentro del script congelado.
Y ahí lo tienes. La desventaja es que no usaría esto para toda la página ... (SEO, resaltado de sintaxis, rendimiento ...) pero es bastante aceptable si tiene un requisito especial en parte de una página.
Editar: Aquí hay un código de muestra. Además, como @FlashXSFX señaló correctamente, cualquier etiqueta de script dentro del script congelado deberá ser escapada. Por lo tanto, en este sencillo ejemplo, crearé una etiqueta <x-script>
para este propósito.
<script id="frozen" type="text/x-frozen-html">
<div id="test">
<x-script type="text/javascript">document.write("hello");</x-script>
</div>
</script>
<script type="text/javascript">
// Grab contents of frozen script and replace `x-script` with `script`
function getSource() {
return document.getElementById("frozen")
.innerHTML.replace(/x-script/gi, "script");
}
// Write it to the document so it actually executes
document.write(getSource());
</script>
Ahora cada vez que necesite la fuente:
alert(getSource());
Ver la demo: http://jsbin.com/uyica3/edit
¿En qué navegador lo ha probado? En FF4b7 y Chrome 8 obtengo ' hola' –
@Marcel: IE7 e IE8 (también IE6) –
@Marcel: Actualicé la pregunta, olvidé una pieza. Lo siento por eso. –