Tengo un iframe de cierta página de un sitio que estoy usando, pero no quiero que todas las partes de esa página se muestren con el iframe. Particularmente, hay una barra lateral de navegación en la página que no quiero que esté en el iframe. Estoy tratando de lograr esto con el javascript que se ve a continuación, pero no puedo entenderlo.

<iframe width="800" height="800" src="scores/new?site_id=193">

<script>
    var element = document.getElementById("sidebar-wrapper");
    element.parentNode.removeChild(element);
</script>

</iframe>
0
Spance 12 may. 2016 a las 19:21

4 respuestas

La mejor respuesta

Puede insertar un control en la página de iframed

  //inside the iframed page
  var iframe = (function() {
      try {
          return window.self !== window.top;
      } catch (e) {
          return true;
      }
  })();

  if(iframe === true) {
    var element = document.getElementById("sidebar-wrapper");
    element.parentNode.removeChild(element);
  }

Espero que esto pueda satisfacer su necesidad.

2
Pierfrancesco 12 may. 2016 a las 16:29

Debe ejecutar el código cuando se carga la página, puede hacerlo así:

  document.addEventListener('DOMContentLoaded', function() {
     var element = document.getElementById("sidebar-wrapper");
     element.parentNode.removeChild(element);
  });
0
bmccruz 12 may. 2016 a las 16:30

Esto debería funcionar teóricamente, y funciona en console. Pero esto no funciona en el HTML, aunque lo está intentando desde el mismo dominio, por razones de seguridad. Solo quería decir mi opinión y probé esto:

<iframe src="http://output.jsbin.com/figujeyiyo" frameborder="0" id="ifrm">
  Sorry, iframes not supported.
</iframe>
<script>
  console.log(document.getElementById("ifrm").contentDocument.documentElement.getElementsByTagName("div"));
  e = document.getElementById("ifrm").contentDocument.documentElement.getElementsByTagName("div")[0];
  console.log(e);
  e.parentNode.removeChild(element);
</script>
0
Praveen Kumar Purushothaman 12 may. 2016 a las 16:30

Por razones de seguridad, no puede ejecutar javascript a través de iframes. Hay algunas excepciones si está en el mismo dominio, pero en su mayor parte realmente debería evitarlo.

Si el iframe no es un sitio que pueda controlar, no hay prácticamente nada que pueda hacer. Si controla el otro sitio y es un dominio diferente, podría trabajar con las funciones postMessage.

Editar: Echa un vistazo a los documentos que Mozilla tiene aquí https: // developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

Tendría que crear un oyente en el interior que maneje un mensaje y oculte su barra lateral. Luego, en el padre, envíe un mensaje al iframe para activar esa función.

Padre:

var iframe = document.getElementById('#iframeID');
iframe.contentWindow.postMessage('iframeTrigger');

Iframe:

window.addEventListener('iframeTrigger', hideSidebar);

function hideSidebar() {
    //do stuff
}
3
Michael Ambrose 12 may. 2016 a las 16:26