AlexKyle
Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
¡Feliz cumpleaños!
<script type="text/javascript">Element.prototype.watch=function(){const a=this;a.dataset.src=a.src;const b=new IntersectionObserver(b=>{b[0].isIntersecting?(a.src=a.dataset.src,a.removeAttribute("srcdoc")):(a.removeAttribute("src"),a.srcdoc=``)});b.observe(a)},document.querySelectorAll("iframe").forEach(a=>a.watch());</script>
Probé esto, y al parecer si funciona (no sé cómo 😅 , pero sirve), independientemente de cualquier tipo de tabs (si ya posees unas, debería funcionar). Basta con aplicarlo tal cual lo dice, dentro del body para mantener la particularidad en todas las entradas o páginas (si vas a realizar pruebas, puedes colocarlo el html de la entrada).agregue el siguiente codigo antes de </body>
aca puede ver el codigo sin obfuscarHTML:<script type="text/javascript">Element.prototype.watch=function(){const a=this;a.dataset.src=a.src;const b=new IntersectionObserver(b=>{b[0].isIntersecting?(a.src=a.dataset.src,a.removeAttribute("srcdoc")):(a.removeAttribute("src"),a.srcdoc=``)});b.observe(a)},document.querySelectorAll("iframe").forEach(a=>a.watch());</script>
Gracias por contarnos sobre tu experiencia colega!Probé esto, y al parecer si funciona (no sé cómo 😅 , pero sirve), independientemente de cualquier tipo de tabs (si ya posees unas, debería funcionar). Basta con aplicarlo tal cual lo dice, dentro del body para mantener la particularidad en todas las entradas o páginas (si vas a realizar pruebas, puedes colocarlo el html de la entrada).
Genial.
lo que hace es mantener el iframe en pantalla activo y los otros cerrados con contenido vacioProbé esto, y al parecer si funciona (no sé cómo 😅 , pero sirve), independientemente de cualquier tipo de tabs (si ya posees unas, debería funcionar). Basta con aplicarlo tal cual lo dice, dentro del body para mantener la particularidad en todas las entradas o páginas (si vas a realizar pruebas, puedes colocarlo el html de la entrada).
Genial.
Muchas gracias! Me dio un excelente resultado. Gracias a todos por su tiempo. n.nagregue el siguiente codigo antes de </body>
aca puede ver el codigo sin obfuscarHTML:<script type="text/javascript">Element.prototype.watch=function(){const a=this;a.dataset.src=a.src;const b=new IntersectionObserver(b=>{b[0].isIntersecting?(a.src=a.dataset.src,a.removeAttribute("srcdoc")):(a.removeAttribute("src"),a.srcdoc=``)});b.observe(a)},document.querySelectorAll("iframe").forEach(a=>a.watch());</script>
Bueno, aunque ahora que hice más pruebas...resulta que el apenas sale del campo de visión el vídeo se reinicia; asumo que esa era la intención, de mostrar el iframe siempre y cuando se acceda a él o se muestre en pantalla.lo que hace es mantener el iframe en pantalla activo y los otros cerrados con contenido vacio
tiene razon, ya lo e cambiadoBueno, aunque ahora que hice más pruebas...resulta que el apenas sale del campo de visión el vídeo se reinicia; asumo que esa era la intención, de mostrar el iframe siempre y cuando se acceda a él o se muestre en pantalla.
Ese sería un pequeño inconveniente, ¿tendría solución? o igual es cosa mía?
<script type="text/javascript">Element.prototype.watch=function(){const a=this;a.dataset.src=a.src,a.removeAttribute("src"),a.srcdoc=``;const b=new IntersectionObserver(b=>{b[0].isIntersecting&&"ok"!=a.dataset.loaded&&(a.src=a.dataset.src,a.removeAttribute("srcdoc"),a.dataset.loaded="ok")});b.observe(a)},document.querySelectorAll("iframe").forEach(a=>a.watch());</script>
Cierto, ahí si se mantiene abierto el vídeo, y el resto aún sin cargar. Aunque si se navega entre opciones o ya decidimos cargar todos los src, se mantienen abiertos igual todos.tiene razon, ya lo e cambiado
HTML:<script type="text/javascript">Element.prototype.watch=function(){const a=this;a.dataset.src=a.src,a.removeAttribute("src"),a.srcdoc=``;const b=new IntersectionObserver(b=>{b[0].isIntersecting&&"ok"!=a.dataset.loaded&&(a.src=a.dataset.src,a.removeAttribute("srcdoc"),a.dataset.loaded="ok")});b.observe(a)},document.querySelectorAll("iframe").forEach(a=>a.watch());</script>
sucede que los iframes se cargan justo despues de cargar el documento y no deja terminar el hilo principal, entonces hasta que cada iframe sea cargado el hilo termina, lo que hace el script es a cada iframe le asigna un contenido html vacio, terminando el hilo principal y ganando velocidad de carga y cuando el iframe este en pantalla se cargue el url normal, la contraparte es que muchos elementos siendo observados pueden dañar la experiencia de usuario por un scroll torpe, la mejor opcion ala hora de trabajar con iframes es simplemente poner un boton para cargarlo al domCierto, ahí si se mantiene abierto el vídeo, y el resto aún sin cargar. Aunque si se navega entre opciones o ya decidimos cargar todos los src, se mantienen abiertos igual todos.
Esta función de IntersectionObserver, ¿ayuda de alguna forma la velocidad de carga del sitio? recién veo esto y pues me pareció curioso e interesante. Gracias por compartir esto, aquello se podría estar aplicando para las imágenes que se presenta de a primeras, manteniendo una carga diferida, ¿verdad?.
IntersectionObserver detecta cuando el elemento sale en pantalla, ya luego tu haces lo que quieras con el.Cierto, ahí si se mantiene abierto el vídeo, y el resto aún sin cargar. Aunque si se navega entre opciones o ya decidimos cargar todos los src, se mantienen abiertos igual todos.
Esta función de IntersectionObserver, ¿ayuda de alguna forma la velocidad de carga del sitio? recién veo esto y pues me pareció curioso e interesante. Gracias por compartir esto, aquello se podría estar aplicando para las imágenes que se presenta de a primeras, manteniendo una carga diferida, ¿verdad?.
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?