2016-05-12 24 views
0

Ich habe einen iframe einer bestimmten Seite von einer Website, die ich verwende, aber ich möchte nicht alle Teile dieser Seite mit dem iframe angezeigt werden. Insbesondere gibt es eine Navigationsleiste auf der Seite, die ich nicht im iframe sein möchte. Ich versuche, dies mit dem Javascript unten zu erreichen, aber ich kann es nicht ganz herausfinden.ID aus iframe entfernen

<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

Ist der 'iframe' aus dem gleiche Domain? –

+0

Ja, im Moment ist alles nur lokal für meine Maschine. Ich teste immer noch – Spance

Antwort

2

Sie können eine Kontrolle in der IFramed Seite einfügen

//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); 
    } 

Hope this Ihren Bedarf anpassen können.

+1

@Spance das ist wirklich nützlich da es keine Verbindung zwischen den 2 Sites/Domains benötigt. –

3

Aus Sicherheitsgründen können Sie Javascript nicht über iframes ausführen. Es gibt einige Ausnahmen, wenn Sie auf der gleichen Domain sind, aber in den meisten Fällen sollten Sie es wirklich vermeiden.

Wenn der Iframe keine Site ist, die Sie steuern können, dann gibt es so gut wie nichts, was Sie tun können. Wenn Sie die andere Seite kontrollieren und es sich um eine andere Domäne handelt, können Sie möglicherweise mit den postMessage Funktionen arbeiten.

Edit: überprüfen Sie die Dokumentation, dass Mozilla hat hier oben https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

Sie müssen einen Zuhörer auf der Innenseite erstellen, die eine Nachricht verarbeitet und Sidebar versteckt. Dann auf der Eltern senden Sie eine Nachricht an den iframe, um diese Funktion auszulösen.

Parent:

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

Iframe:

window.addEventListener('iframeTrigger', hideSidebar); 

function hideSidebar() { 
    //do stuff 
} 
+0

die Seite, die der iFrame kommt aus ist eine App, die ich besitze und schrieb mich – Spance

+0

hier ist ein schöner Artikel für diese auch https://davidwalsh.name/window-iframe – Rahul

0

Dies sollte theoretisch funktionieren, und es funktioniert in console. Aber das funktioniert nicht im HTML, obwohl Sie es aus Sicherheitsgründen aus derselben Domäne versuchen. Ich wollte nur meine Ansicht sagen, und ich versuchte, diese:

<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

Sie müssen den Code auszuführen, wenn die Seite geladen wird, können Sie es wie folgt tun:

document.addEventListener('DOMContentLoaded', function() { 
    var element = document.getElementById("sidebar-wrapper"); 
    element.parentNode.removeChild(element); 
    }); 
+0

Sie können dies nicht vom übergeordneten Frame aus tun. –

Verwandte Themen