Tengo un iframe que muestra un PDF codificado en base64. Una vez que se ha cargado, intento hacer .contents().find(..) , sin embargo, no encuentra el contenido. Dentro del iframe se encuentra el documento HTML cargado correctamente que contiene el PDF y un elemento de texto " " . Hacer .contents() devolverá un elemento, que es el texto " " .
Todo este código funciona bien si no incluyo la cadena base64 como fuente para el iframe ( data:application/pdf;base64,.. ). El PDF en sí se muestra bien y se carga correctamente, pero no puedo encontrar una forma de acceder al documento a través de JS/JQuery. No creo que esto sea un problema de sincronización, ya que en el modo de depuración cuando se detiene en la línea antes de que falle, puedo ver que el contenido se cargó por completo (además, se está utilizando el método .on('load', ..) ).
Código relevante (ASP .NET MVC):
HTML:
<iframe class="converted-display" id="doc-iframe" src="@ViewBag.RAWData"> </iframe>JS:
$(document).ready(function () { var url = window.location.href if (url.toLowerCase().includes("convert")) { $('#doc-iframe').on('load', function () { debugger $('#doc-iframe').contents().find('body').addClass('..') var element = $('#doc-iframe').contents().find('head').first()[0]; var style = document.createElement('style'); style.innerHTML = .. window.styleNode = style; element.parentNode.insertBefore(style, element); }) } }) ViewBag.RAWData contendrá una cadena ( data:application/pdf;base64,.. ).
Mostrando el resultado de .contents() e intentando indexarlo
Para descartar problemas asíncronos, también probé los comandos en la consola después de que la página se había cargado por completo y encontré los mismos problemas.
¿Alguien tiene alguna sugerencia o recurso? He leído el documento para .contents () y varios otros documentos, también he probado una multitud de variaciones en el JS, así como diferentes métodos para mostrar archivos PDF, por ejemplo, objeto, incrustado, lo que me hace preguntarme si el problema raíz es el src que se está proporcionando.
Muchas gracias por cualquier ayuda.
ACTUALIZAR:
Problema de origen cruzado, que no esperaba ya que los datos están esencialmente codificados en el punto en que se cargaron. ¿Alguna sugerencia sobre cómo solucionarlo?