Cuando escribe una URL en Facebook, aparece automáticamente la función "publicar un enlace". Con la mayoría de los sitios web, carga automáticamente una selección de imágenes que extrae de algún lugar de la página para ir junto con el enlace y la descripción. ¿alguien tiene una idea de cómo implementar esa misma característica para nuestro propio sitio sin ninguna API de FB, etc. solo JavaScript o JQuery?¿Cómo se realiza la vista previa del enlace de Facebook?
Respuesta
Debido a restricciones de seguridad, JavaScript no puede cargar ninguna página desde ningún servidor. Facebook en realidad pregunta a los servidores de Facebook para obtener información sobre esa página, y los servidores a su vez consultan la página para extraer la información. Usted también necesitará una implementación en el servidor de esto.
Aparte de eso, es bastante simple: utilizar una biblioteca de cliente HTTP para el idioma que prefiera para conectarse a la dirección URL proporcionada, a continuación, utilizar un análisis de HTML en la biblioteca para extraer la etiqueta title
, identificar una pieza significativa de texto en el body
etiqueta, y extrae las fuentes de etiqueta img
que parecen las más apropiadas.
Una vez que su servidor puede extraer información sobre una página, es un ejercicio bastante simple llamarlo a través de AJAX.
Victor tiene razón. No hay forma de que JS cargue y procese una página desde otro servidor. Tienes que hacer una llamada AJAX a una página que ejecuta el análisis HTML que devuelve la información que necesitas. – Sergi
Sí, esa debe ser la única forma de mostrar la vista previa. Lo que me interesa es la imagen. ¿Hay algún mecanismo para detectar la imagen más adecuada para mostrar como representativa de la página? – SexyBeast
@Keshan.
Desarrollé una vista previa del enlace de Facebook con PHP y jQuery que está en mi sitio web. Eche un vistazo ... El código fuente es gratuito ... No publiqué todo el código aquí porque son muchos archivos ... Pero si prefiere que el código se publique aquí, dígamelo y lo publicaré.
Está disponible en Github https://github.com/LeonardoCardoso/Facebook-Link-Preview
¡Gracias! Echaré un vistazo. – Keshan
De hecho. Pero no son pocos códigos. También está disponible en Github https://github.com/LeonardoCardoso/Facebook-Link-Preview donde muchas personas han bifurcado. Aunque mi sitio web proporciona una explicación completa sobre este complemento, no estoy tratando de generar flujo de visitas para allí. –
Creo pasos siguientes forman parte
- uso de JavaScript encontrar los enlaces en el texto escrito
- A partir de los enlaces que se encuentran obtener el último eslabón en el texto (FB muestra solo para el último enlace)
- Usando AJAX envíe este enlace d etail a una página del lado del servidor (PHP/ASP/JSP, etc.)
- La página del lado del servidor recibe los datos necesarios (de los meta-tags) incluyendo
- Título (De preferencia Open Graph
og:title
si falta en<title>
- Descripción (gráfico Preferiblemente abierto
og:description
si falta a<meta name="description" ....
- Imágenes (preferiblemente Open graph
og:image
si falta a<img src=....
- Título (De preferencia Open Graph
- En PHP puede obtener Ts e datos ya sea usando
curl
ofile_get_contents
y analice los datos requeridos detallados anteriormente. No estoy seguro acerca de otro Idioma. - Muestra el resultado así encontrado en la solicitud AJAX.
Además, creo que FB almacena los datos, una vez encontrados, en la base de datos y las primeras consultas allí. Esto les ayuda a obtener un resultado más rápido y, por lo tanto, comparten el mismo artículo y les gusta generar la imagen y los detalles de los datos almacenados.
Necesitará Javascript para mostrar esta vista previa en tiempo de ejecución (mientras escribe en el área de texto). Sin embargo, si solo lo necesita después de publicar los datos, puede hacerlo con el lenguaje de servidor puro (puede evitar Javascript) y siguiendo los pasos anteriores simplemente elimine la llamada AJAX.
Sorprendentemente, no hay tantos servicios haciendo esto. Como se publicó en el comentario anterior, su navegador no puede hacer esto sin un elemento de servidor.
Por lo tanto, el flujo de trabajo es realmente esto:
- analizar el texto insertado para probar que es una URL válida
- Whiz ese valor URL a través de AJAX a un servicio a medida, o hágalo usted mismo.
- El servicio (el mío está escrito en .Net) carga la página en la memoria y la analiza con un analizador DOM. Uso el paquete HTML Agility, podría usar AngleSharp, etc.
- Necesita extraer los meta elementos de gráfico abierto con (típicamente) recurrir al meta título/descripción estándar y todo.
- Empaque todo ese OG bondad y devuelva este modelo a través de AJAX
- Coloque los valores devueltos en la pantalla como una vista previa.
- Si aceptó escribir la lógica para insertar los valores en su base de datos
Si no está preparado para crear el objeto de servidor, hay servicios de terceros que pueden hacer los bits de recuperación:
mejor de las suertes.
- 1. ¿Vista previa del sitio web de Javascript?
- 2. TWTweetComposeViewController no muestra enlace de vista previa
- 3. ¿Existe un código de código abierto para crear texto e iconos de "vista previa del enlace", como en Facebook?
- 4. ¿Cómo se realiza el enlace de datos bidireccional en WPF?
- 5. vista previa incrustada Enlaces en iOS aplicación como Facebook
- 6. Android cámara vista previa tutorial
- 7. SurfaceView con vista previa de la cámara no se destruye
- 8. ¿La captación previa del enlace html5 afecta a Google Analytics?
- 9. ¿Generar la imagen de vista previa del archivo de video?
- 10. ¿Cómo puedo obtener el enlace 'Vista previa' de Wordpress para abrir en la misma ventana?
- 11. Quicklook vista previa incrustada
- 12. JavaScript imprimir vista previa
- 13. La vista previa de impresión se repite en cada página
- 14. Vista previa de la cámara Android se ve extraño
- 15. ¿Cómo se realiza la transición del navegador de origen github?
- 16. ¿Cómo crear una vista previa de url en JavaScript?
- 17. Omitir UIImagePickerController Vista previa?
- 18. ¿Cómo se puede llamar Vista previa de impresión desde Javascript?
- 19. La vista previa del tema falla en Eclipse
- 20. ¿Cómo ocultar/desactivar la vista previa de admob?
- 21. ¿Cómo mejorar la vista previa de la cámara?
- 22. ¿Cómo se realiza la herencia del controlador en ExtJS 4?
- 23. Exe realiza un enlace completo cuando la Biblioteca cambia, a pesar del enlace incremental
- 24. UIImagePickerController sin superposición en la vista previa
- 25. ¿Cómo se realiza la validación de dirección?
- 26. La capa de vista previa de la cámara AV Foundation se acerca, cómo alejarse?
- 27. Android 3.0, Vista previa de widgets
- 28. Vista previa de Eclipse JSP
- 29. Imprimir ServerReport sin vista previa
- 30. ¿Cómo se elimina automáticamente la ventana de vista previa después de la autocompletación en Vim?
Acabo de lanzar una biblioteca del lado del cliente para ese propósito. Compruébelo: [bootstrap-linkpreview] (https://github.com/Ekito/bootstrap-linkpreview) –