HTML iframe - Bildlauf deaktivieren

84

Ich habe folgenden Iframe auf meiner Website:

<iframe src="<<URL>>" height="800" width="800" sandbox="allow-same-origin allow-scripts allow-forms" scrolling="no" style="overflow: hidden"></iframe>

Und es hat Bildlaufleisten.
Wie kann man sie loswerden?

Michał Herman
quelle
5
Herman - ich denke scrolling="no"sollte funktionieren. Es funktioniert für mich. ist es in HTML5?
Yagnesh Agola
@Yagnesh Ich habe dir ein Beispiel meines Iframes gepostet und es funktioniert nicht.
Michał Herman
Ich habe versucht, mit Ihrem Code und es funktioniert gut ohne Bildlauf. Bitte überprüfen Sie, ob iframe unter einem div ist.
Yagnesh Agola
Vielleicht fügt der <body> im Iframe die Bildlaufleisten hinzu und nicht der <iframe>?
Oriadam

Antworten:

162

Leider glaube ich nicht, dass es möglich ist, HTML5 nur mit HTML- und CSS-Eigenschaften vollständig anzupassen. Glücklicherweise unterstützen die meisten Browser die scrollingEigenschaft (die aus der HTML5-Spezifikation entfernt wurde ) weiterhin.

overflowist keine Lösung für HTML5, da der einzige moderne Browser, der dies fälschlicherweise unterstützt, Firefox ist.

Eine aktuelle Lösung wäre, beide zu kombinieren:

<iframe src="" scrolling="no"></iframe>
iframe {
  overflow: hidden;
}

Dies könnte jedoch veraltet sein, wenn die Browser aktualisiert werden. Möglicherweise möchten Sie dies für eine JavaScript-Lösung überprüfen: http://www.christersvensson.com/html-tool/iframe.htm

Bearbeiten: Ich habe überprüft und scrolling="no"werde in IE10, Chrome 25 und Opera 12.12 funktionieren.

James Donnelly
quelle
1
Das Bildlaufattribut <iframe> wird in HTML5 nicht unterstützt. Verwenden Sie stattdessen CSS. Quelle: w3schools.com/tags/att_iframe_scrolling.asp
Linus
4
@LinusAn das ist, was die erste Zeile meiner Antwort besagt. Das Problem ist jedoch, dass Browser es nicht einfach ganz löschen können, da es HTML4-Websites beschädigen würde. Daher ist das scrollingAttribut immer noch eine praktikable, wenn auch ungültige Option.
James Donnelly
Dies ist korrekt, aber in Chrome wird das scrollIntoView für Elemente im iframe unterbrochen. Siehe code.google.com/p/chromium/issues/detail?id=137214
Peter Brand
@Linus - das sollte leider nicht funktionieren, und alle Browser, in denen es funktioniert, sind nicht konform: Überlauf sollte nicht auf ersetzte Elemente wie Schaltflächen, Formularelemente und Iframes angewendet werden.
Jimmy Breck-McKye
3
@DaniSpringer Diese Lösung soll Inhalte ausschneiden. Wenn Sie einen Iframe laden, ohne scrollen zu können, wird die Größe der gesamten untergeordneten Seite nicht automatisch so geändert, dass sie in die angegebenen Iframe-Abmessungen passt.
Nate
20

Ich habe das gleiche Problem mit diesem CSS gelöst:

    pointer-events:none;
John Smith
quelle
8
Es scheint den physischen Versuch zu blockieren, nur nicht die visuellen Bildlaufleisten ...
LWC
6
Dadurch wird verhindert, dass Mausereignisse auf dem Iframe ausgelöst werden, einschließlich des Bildlaufs. Viel zu breit, um eine robuste Lösung zu sein
Tom McKenzie
Ich musste dies verwenden, um das Scrollen in einem Iframe zu verhindern, der foreignobjectin ein SVG-Bild eingebettet ist (hat einfach overflow: hiddennicht funktioniert)
Tim
Dies stoppt nicht das Scrollen über das Mausrad (in Chrom). Ich glaube auch, dass das OP die Bildlaufleisten tatsächlich ausblenden möchte. Sie sollten Ihre Antwort auf stackoverflow.com/questions/2712034 verschieben, da ich glaube, dass dies diese Frage teilweise löst.
EoghanM
Danke, zumindest ist das Iframe-Scrollen deaktiviert.
Sören
11

Es scheint mit zu funktionieren

html, body { overflow: hidden; }

im IFrame

bearbeiten: Natürlich funktioniert dies nur, wenn Sie Zugriff auf den Inhalt des Iframes haben (den ich in meinem Fall habe)

Alex
quelle
1
Wenn Sie jedoch einen Iframe verwenden, können Sie normalerweise nicht auf die darin enthaltenen Inhalte zugreifen, da häufig Inhalte in eine andere Domäne aufgenommen werden.
Tim Malone
2

Stellen Sie den gesamten Inhalt auf:

#yourContent{
 width:100%;
height:100%;  // in you csss
}

Die Sache ist, dass die Iframe-Schriftrolle durch den Inhalt NICHT durch den Iframe selbst festgelegt wird.

Stellen Sie den Inhalt im Innenraum mit CSS auf 100% und den gewünschten für den Iframe in HTML ein

Verde Mc
quelle
1

Ich habe versucht, in meinem aktuellen Browser (Google Chrome Version 60.0.3112.113 (Official Build) (64-Bit)) zu scrollen = "nein", und das hat nicht funktioniert. Scroll = "no" hat jedoch funktioniert. Könnte einen Versuch wert sein

<iframe src="<<URL>>" height="800" width="800" sandbox="allow-same-origin allow-scripts allow-forms" scroll="no" style="overflow: hidden"></iframe>
Zach Imholte
quelle
1
Ich glaube, die Ursache war nur, dass ich die Höhe = "" so geändert habe, dass sie länger ist als der tatsächliche iFrame, den ich laden möchte. Wenn ich die Höhe so lang mache, dass das Scrollen unsinnig wird, verschwindet die Bildlaufleiste für mich. Ich versuche jedoch, die gesamte Seite anzuzeigen, was sich möglicherweise von dem unterscheidet, was Sie erreichen möchten.
Zach Imholte
Dies fühlt sich eher wie ein Kommentar als wie eine tatsächliche Antwort auf die Frage an.
1
Danke JDV! Ich bin neu bei StackOverflow, also habe ich versucht zu kommentieren, hatte aber nicht genug Reputationspunkte oder wie auch immer es heißt. Also stimme ich zu, es hätte ein Kommentar sein sollen. Schätzen Sie Ihre Anleitung!
Zach Imholte
Es gibt Möglichkeiten, wie Sie einen Beitrag leisten können, bis Sie die erforderliche Wiederholung erhalten. stackoverflow.com/help/whats-reputation
0

Fügen Sie diese Stile hinzu .. für Ihr Iframe-Tag ..

overflow-x:hidden;
overflow-y:hidden;
sasi
quelle
8
Overflowfunktioniert nicht mit HTML5 iFrames. Der einzige Browser, der dies fälschlicherweise unterstützt, ist Firefox.
James Donnelly
1
@ JamesDonnelly Eigentlich hat er nicht angegeben, dass es HTML5 ist, deshalb haben wir Überlauf verwendet
sasi
0

Da der "Überlauf: versteckt;" Die Eigenschaft funktioniert auf dem iFrame selbst nicht ordnungsgemäß, scheint jedoch Ergebnisse zu liefern, wenn sie auf den Hauptteil der Seite im iFrame angewendet wird. Ich habe Folgendes versucht:

iframe body { overflow:hidden; }

Welche überraschend hat die Arbeit mit Firefox, die lästigen Bildlaufleisten zu entfernen.

In Safari wurde jedoch auf der rechten Seite des Iframes zwischen seinem Inhalt und seinem Rand eine seltsame 2 Pixel breite transparente Linie angezeigt. Seltsam.

Seb Zaremba
quelle
0

Fügen Sie einfach einen Iframe hinzu, der wie eine der folgenden Optionen gestaltet ist. Ich hoffe das löst das Problem.

1. Option:

<iframe src="https://www.skyhub.ca/featured-listing" style="position: absolute; visibility: hidden;" onload="this.style.position='static'; this.style.visibility='visible';" scrolling="no" frameborder="0" marginheight="0px" marginwidth="0px" height="400px" width="1200px" allowfullscreen></iframe>

2. Option:

<iframe src="https://www.skyhub.ca/featured-listing" style="display: none;" onload="this.style.display='block';" scrolling="no" frameborder="0" marginheight="0px" marginwidth="0px" height="400px" width="1200px" allowfullscreen></iframe>
Arshadul Hossain
quelle
0

Das funktioniert bei mir:

<style>
*{overflow:hidden!important;}
html{overflow:scroll!important;}
</style>

Hinweis: Wenn Sie in einem anderen Element eine Bildlaufleiste benötigen, fügen Sie {overflow:scroll!important;}diesem Element auch CSS hinzu

Schwarzes Feuer
quelle
-1

Für diesen Rahmen:

    <iframe src="" name="" id=""></iframe>

Ich habe dies mit meinem CSS-Code versucht:

    iframe#put the value of id here::-webkit-scrollbar {
         display: none;
    }
Lucas Santos
quelle
-1

unter HTML5-Versionen

iframe {
    overflow:hidden;
}

In HTML5

<iframe seamless="seamless"  ....>


iframe[seamless]{

   overflow: hidden;
}

aber noch nicht richtig unterstützt

Prashobh
quelle
2
Gemäß diesem und dies , das seamlesshat Attribut aus der Spezifikation entfernt.
Tim Malone
-5

Sie können den folgenden CSS-Code verwenden:

margin-top: -145px; 
margin-left: -80px;
margin-bottom: -650px;

Um die Ansicht des Iframes einzuschränken.

Jean Nouvellet
quelle
3
Ist margin-downeine neue Immobilie oder meintest du margin-bottom?
Bjørn-Roger Kringsjå