Estoy trabajando en una aplicación solid-js que tiene un iframe que contiene un sitio. Estoy tratando de obtener el título de la página actual cargada en el iframe y no tengo el mismo nombre de dominio que mi sitio. Me gustaría saber si es posible obtener este título utilizando la API XMLHttpRequest . Aquí está el código de mi iframe:
<iframe width="100%" height="1300" id="iframeID" src="https://gkwhelps.herokuapp.com" ></iframe>No es posible solo en JavaScript front-end, debido a restricciones de seguridad: no puede hacer nada con un documento en un dominio diferente a menos que ese dominio haya configurado específicamente las cosas para permitirle interactuar con él, lo cual es bastante inusual.
Pero no es imposible. Si configura una aplicación en su propio servidor, puede hacer que su sitio realice una solicitud a su aplicación del lado del servidor y que su aplicación luego haga una solicitud al sitio externo y luego devuelva el texto de la respuesta a su cliente, o analice la respuesta usted mismo y envíe el título del documento al cliente.
Por ejemplo, en un servidor express , node-fetch y JSDom , podría hacer algo como:
fetch('https://gkwhelps.herokuapp.com') .then(res => res.text()) .then((responseText) => { const doc = new JSDOM(responseText); res.send(doc.title); }) // .catch(handleErrors); Y luego, desde el cliente, solo necesita realizar una fetch o una XMLHttpRequest a su aplicación, y se devolverá el título.