So deaktivieren Sie Iframes in Browsern

2

Ich verwende derzeit Chrome 27.

Nachdem Sie die Einstellungsoptionen durchgesehen haben ( Einstellungen → Datenschutz → Inhaltseinstellungen ) Ich sehe, dass ich so gut wie alles deaktivieren kann ... außer iframes.

Gibt es eine einfache Möglichkeit, dies zu tun? Ist das auch in IE und Firefox möglich?

Danield
quelle
Warum sollten Sie iframes deaktivieren?
gronostaj
Es gibt eine bestimmte Site, die nützliche Inhalte für mich enthält, jedoch enthält der iframe-Inhalt / die Werbung Inhalte, die ich eher nicht sehen möchte. Ich brauche das also nur vorübergehend.
Danield
Sie möchten also tatsächlich Iframes auf einer bestimmten Site blockieren?
gronostaj
na ja, vielleicht ein paar seiten
Danield
1
Seltsamerweise gibt es integrierte Optionen, um Bilder, Plugins (wie Flash) usw. zu blockieren. Warum nicht Iframes - die im Allgemeinen mit Anzeigen in Verbindung gebracht werden und manchmal ziemlich ärgerlich sind
Danield

Antworten:

2

Ich habe am Ende die Erweiterung "stylish" verwendet

Sie können bestimmte URLs als Ziel auswählen und anschließend benutzerdefinierte Stile für diese Website hinzufügen.

Hier ist ein Beitrag im Stapelüberlauf was dies veranschaulicht.

In meinem Fall fügte ich die folgende benutzerdefinierte CSS für die bestimmte Website hinzu, die ich anvisieren musste

iframe
{
  display: none;
}

... und es funktioniert super!

Danield
quelle
2
Was ist der Sinn dabei? Das Javascript in iframes wird weiterhin ausgeführt.
kinokijuf
4
Wie bereits in den Kommentaren zu der Frage erwähnt, möchte ich nur den Inhalt der Iframes auf einer bestimmten Website ausblenden. Hier geht es nicht um Sicherheit
Danield
Das hat keinen Sinn
kinokijuf
4
Es ist in der Tat nützlich, um den iframe zu verstecken. Danke für die Lösung.
acsadam0404
2
Der Punkt ist, wenn ein hässlicher iframe den Hauptinhalt einer schlecht gestalteten Website überlappt. Stellen Sie nicht die Nützlichkeit in Frage, nur dass es eine Person gibt, die es braucht!
Vijay
2

Entfernen Sie einfach alle Elemente, die mit JavaScript direkt in der Konsole sind

oder installieren Sie ein Plugin für eine dauerhaftere Lösung wie: noscript

Temporäre Korrektur

Eine Linie:

(function(){var f=document.getElementsByTagName("iframe");for(var i in f)try{f[i].parentNode.removeChild(f[i]);}catch(e){console.error(e);}})();

Dadurch werden die Iframes auf der Seite endgültig entfernt. (bis die Seite aktualisiert wird)

Um das live zu nutzen

  • offene Konsole ( F12 Schlüssel)
  • Navigieren Sie zur Registerkarte Konsole
  • fügen Sie die eine Zeile oder den menschlichen Code in das ein

    >
    

    Feld und drücken Sie Eingeben

Menschlicher Code:

(function(){
var listOfFrames = document.getElementsByTagName("iframe");

while (listOfFrames /*exists*/ && (listOfFrames.length > 0) ) {
  try {
    for (var iterator in listOfFrames) {
      listOfFrames[iterator]                  // get the next frame
      .parentNode                             // find the parent 
      .removeChild( listOfFrames[iterator] ); // remove the frame from the parent
    }
  }catch(e){                                  // we found a frame that no longer exists
    console.error(e);
  }
  var listOfFrames = 
     document.getElementsByTagName("iframe"); // update the list regardless of errors in case we missed one
}                                             // loop again unless the condition is satisfied
})();                                         // end of call of the function

Bevor Sie dies versuchen

Wenn Sie das Verhalten Ihres Browsers in Bezug auf Schleifen und das Entfernen von Elementen nicht kennen, stellen Sie sicher, dass alles vorhanden ist Gerettet lokal oder auf dem Server, bevor Sie beginnen. Code ausführen entfernen könnte Ihre Arbeit. Stellen Sie sicher, dass es Ihnen gut geht Browser stürzt ab .

Ich habe das editiert, weil ich nicht dachte, dass es lesbar ist. Hoffentlich ist es besser.

haelmic
quelle
Kleinere Anmerkung: Ich würde das erwarten try...catch um die f[i] .parentNode .removeChild(f[i]) um sicherzustellen, dass andere noch gelöscht werden.
Arjan
Danke für deine Eingabe @Arjan. Ich füge meiner Antwort eine Verbesserung hinzu, die etwas besser funktioniert.
haelmic
Wird dies nicht zu einer Endlosschleife führen, wenn das Entfernen eines der Iframes fehlschlägt (und weiterhin fehlschlägt)?
Venryx
@Venryx Es könnte möglich sein, dass der Try-Catch aus geschachtelten und daher bereits gelöschten Iframes bestand. Ich weiß nicht ob removeChild kann auf andere Weise versagen. Wenn dies möglich ist, wird eine Rückmeldung für die Ereigniswarteschlange angezeigt. Ich glaube nicht, dass removeChild auf andere Weise versagen kann. Ich glaube nicht, dass es passieren kann.
haelmic