Tengo un widget de UI que debe colocarse en un IFRAME tanto por motivos de rendimiento como para que podamos sindicalizarlo fácilmente en sitios afiliados. La interfaz de usuario para el widget incluye sugerencias de herramientas que se muestran sobre el resto del contenido de la página. Vea la captura de pantalla a continuación o go to the site para verlo en acción. ¿Hay alguna forma de hacer que el contenido dentro de IFRAME se superponga con el contenido del marco principal?¿Hay alguna manera de tener contenido de un desbordamiento de IFRAME en el marco principal?
Respuesta
No, no es posible. Ignorando cualquier razón histórica, hoy en día se consideraría una vulnerabilidad de seguridad, por ej. muchos sitios colocan contenido que no es de confianza en iframes (la fuente del iframe es de un origen diferente, por lo que no puede modificar el fotograma principal, según la misma política de origen). Si dicho contenido no confiable tenía un mecanismo para colocar contenido fuera de los límites del iframe, podría (por ejemplo) colocar un usuario de inicio de sesión "idéntico" (o lo que sea) sobre los campos de inicio de sesión reales del marco principal, y así podría robar información de nombre de usuario/contraseña. Lo cual apestaría.
Por lo que yo sé que no se puede hacer. ¿Por qué no utilizar una solicitud XHR y llenar un div en su lugar?
Eso es lo que estamos haciendo actualmente, pero, como se mencionó anteriormente, uno de los requisitos es permitir que los sitios de terceros incluyan el IFRAME como widget en sus páginas. La implementación actual también está congelando la interfaz de usuario, pero estoy seguro de que puedo evitarlo. –
Puede simplemente especificar una API XHR y permitir que otros se conecten a ella de la forma que lo considere apropiado (también les permite, por supuesto, desactivar su secuencia de comandos, pero que así sea). – eyelidlessness
Eso solo sería seguro si realmente confías en el contenido/widget: una ventaja de los iframes es que efectivamente contienen contenido de la barra de seguridad (cortesía de la misma política de origen) – olliej
Esto puede estar fuera de la marca ya sea porque no es adecuado a la luz de sus requisitos, o puede que no ayude (!), Pero podría valer la pena visitar UFrame. Es una especie de híbrido de iframe y div, y probablemente podría empaquetarse como un widget (tu mejor opción sería dar a los clientes una etiqueta <script>
que absorbería UFrame y el marcado relevante). De lo que no estoy seguro es de si puedes lograr la superposición que requieres, pero posiblemente valga la pena jugar con ella. Lo siento, no puedo ser más específico, pero no es algo que haya usado yo mismo, solo lo marqué hace un tiempo para referencia futura.
si conoce el máximo valor absoluto que puede tener la herramienta superior, puede crear un div que sea el alto del contenido + la mayor distancia que mostrará la información sobre herramientas. Alinee el marco flotante con la parte inferior del div. asegúrese de que el iframe y el div sean transparentes. luego debe mostrarse el contenido del iframe con la información sobre herramientas. Aunque esto te provoca el dolor de cabeza de asegurarte de que cosas como destacar funcionan igual en todos los navegadores.
No pude encontrar una manera de hacer que el contenido del marco salga del marco, pero encontré una forma de hackearlo, moviendo la información sobre herramientas al documento principal y colocándolo arriba (z- index) el iframe.
El enfoque era:
1) encontrar el marco flotante en el documento padre
2) retirar el elemento de información sobre herramientas de donde está en el DOM, y agregarlo al documento de nivel superior dentro del elemento que contiene el iframe.
3) probablemente necesite ajustar el índice Z y el posicionamiento, dependiendo de cómo estaba haciendo eso en primer lugar.
Puede acceder al documento principal de un iframe usando parent.document.
jQuery(tooltip).remove(); var iframeParent = jQuery("#the_id_of_the_iframe", parent.document)[0].parentNode; iframeParent.appendChild(tooltip); //adjust z-index, positioning
Esto no funcionará si estos dos documentos son de dominios diferentes. – keaukraine
Nido de su iframe actual y el div sugerido, dentro de un marco flotante de los padres, a continuación, colocar en su iframe padres a 3 partes, lo mejor de ambos mundos!
- 1. ¿Hay alguna forma de obtener la URL principal del contenido de un marco flotante?
- 2. ¿Hay alguna manera de tener diferentes vistas en un NSCollectionView?
- 3. ¿Hay alguna manera de cambiar el contexto a iframe en la consola de JavaScript?
- 4. iPhone: ¿Hay alguna manera de cargarFromNib Y tener un reuseIdentifier?
- 5. Detectar el cambio de altura del contenido del marco iframe
- 6. ¿Hay alguna manera de tener la funcionalidad index.html con contenido alojado en S3?
- 7. ¿Cómo puedo evitar que un iframe acceda al marco principal?
- 8. ¿Hay alguna manera de usar Thickbox con contenido dinámico?
- 9. Establecer foco en contenido de iframe
- 10. ¿Hay alguna manera de tener paralelo para cada bucle?
- 11. ¿Hay alguna manera de mostrar contenido HTML dentro de Flash?
- 12. Macrodef Ant: ¿Hay alguna manera de obtener el contenido de un parámetro de elemento?
- 13. Xcode: ¿hay alguna manera de obtener el identificador de paquete de un proyecto principal?
- 14. ¿Hay alguna manera de limitar la memoria, ghci puede tener?
- 15. ¿Hay alguna manera de tener argumentos dinámicos por defecto?
- 16. ¿Cómo borrar el contenido de un IFRAME?
- 17. ¿Hay alguna forma de tener hangouts fuera de google +?
- 18. ¿hay alguna manera de ver el contenido real de un enlace simbólico?
- 19. Deshabilitar cookies dentro de un marco/Iframe
- 20. ¿Hay alguna manera de tener el equivalente de una estructura en Java 1.4?
- 21. ¿Hay alguna manera de tener el texto de copyright antepuesto a los nuevos archivos en Vim?
- 22. ¿Hay alguna manera de incluir automáticamente archivos de contenido en el archivo de proyecto asp.net?
- 23. ¿Hay alguna manera de omitir el parámetro?
- 24. Detectar error al cargar el contenido de un iframe
- 25. ¿Hay alguna manera de negar un predicado?
- 26. Permitir que HTTP iFrame llame a JavaScript en el marco principal de HTTPS
- 27. ¿Hay alguna manera para que un div en particular ignore su posicionamiento de div principal?
- 28. ¿Hay alguna manera de cambiar el propietario de un JDialog?
- 29. ¿Hay alguna manera de abatir un AutoBean de GWT?
- 30. ¿Hay alguna manera de tener un campo de entrada numérica enmascarado?
Acabo de descubrir, que los elementos '