„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie implementiert man Scrollen innerhalb eines iFrames in Mobile Safari?

Wie implementiert man Scrollen innerhalb eines iFrames in Mobile Safari?

Veröffentlicht am 12.11.2024
Durchsuche:148

How to Implement Scrolling Inside an iFrame on Mobile Safari?

Anzeigen von iFrames in Mobile Safari

Beim Versuch, einen iFrame in eine mobile Webanwendung mit Safari auf iOS-Geräten einzubetten, entsteht eine häufige Herausforderung: die Beschränkung der iFrame-Abmessungen auf Passen Sie den iPhone-Bildschirm an. Höhen- und Breitenattribute innerhalb des iFrame-Elements haben oft keine Auswirkung.

Eine einfache Lösung besteht jedoch darin, den iFrame in ein div-Element einzuschließen. Dies ermöglicht die Kontrolle der Größe des iFrames, wirft jedoch ein neues Problem auf: die Unfähigkeit, innerhalb des iFrames zu scrollen.

Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:

  1. Wickeln Sie den iFrame in ein Div mit einer angegebenen Höhe und Breite ein, um seine Abmessungen einzuschränken.
  2. Implementieren Sie innerhalb des iFrame-Inhalts JavaScript, um mit dem Einschließenden zu kommunizieren divs übergeordnetes Element.
  3. Fügen Sie einen Berührungsereignis-Listener zum iFrame-Körper hinzu, um Berührungsereignisse zu erfassen und die Bildlaufposition des übergeordneten Elements entsprechend zu aktualisieren.

Unten finden Sie ein Beispiel für den JavaScript- und HTML-Code erreichen Sie dies:

// JavaScript
setTimeout(function () {
  var startY = 0;
  var startX = 0;
  var b = document.body;
  b.addEventListener("touchstart", function (event) {
    parent.window.scrollTo(0, 1);
    startY = event.targetTouches[0].pageY;
    startX = event.targetTouches[0].pageX;
  });
  b.addEventListener("touchmove", function (event) {
    event.preventDefault();
    var posy = event.targetTouches[0].pageY;
    var h = parent.document.getElementById("scroller");
    var sty = h.scrollTop;

    var posx = event.targetTouches[0].pageX;
    var stx = h.scrollLeft;
    h.scrollTop = sty - (posy - startY);
    h.scrollLeft = stx - (posx - startX);
    startY = posy;
    startX = posx;
  });
}, 1000);

Bitte beachten Sie, dass Sie stattdessen ein Overlay implementieren können, wenn Sie den iFrame-Inhalt nicht kontrollieren. Diese Lösung ermöglicht jedoch keine Interaktion mit dem iFrame-Inhalt, abgesehen vom Scrollen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3