iOS 10+ safari görünüm yakınlaştırma devre dışı bırakılsın mı?


164

Benim iPhone 6 artı iOS'a 10 beta sürümünü güncellemek ve sadece mobil safari, çift dokunarak herhangi web sayfalarını yakınlaştırabilir veya kıstırma gördük YOKSAYuser-scalable=no meta etiketinde kodu. Bunun bir hata veya özellik olup olmadığını bilmiyorum. Bir özellik olarak kabul edilirse, iOS 10 safarisini yakınlaştırma görünüm penceresini nasıl devre dışı bırakabiliriz?


iOS 12/11 serbest bırakılması güncellenen iOS 11 ve iOS 12 safari hala DO NOT saygı user-scalable=nometa etiketi.

Safari'de mobil github sitesi


2
Bir erişilebilirlik özelliği: iOS 10'da Safari'de not: twitter.com/thomasfuchs/status/742531231007559680/photo/1
ErikE

87
Hayır, değil. Normal web içeriği için kötü bir uygulamadır. Web uygulamaları için varsayılan zum davranışı kullanılabilirliği tamamen bozabilir. Örneğin, hiç kimse bir kanal yukarı düğmesine yakınlaştırmak istemez, çünkü iki kez dokunurlar veya bir video oyununun bir parçasını yakınlaştırmak istemez, çünkü atlama düğmesine iki kez dokunurlar. Bu özelliğin ilk etapta eklenmesinin bir nedeni var ve sadece birkaç "web tasarımcısı" ne yaptıklarını bilmediği için herkes için kullanılabilirliği kırmanın bir anlamı yok. Site tasarımcılarına çığlık at ve tarayıcıyı kırmayı bırak.
dgatwood

36
Bunun "kötü uygulama" olduğunu söylemek bir fikirdir ve Apple'ın topluluğun aylar / yıllar / yıllar boyunca çapraz platform uygulaması ve bunlara devasa bir saçmalık harcadığı web standartlarını almakta ısrar ettiği gerçeğini değiştirmez. Apple neden web tasarımcılarının ne yaptığını bilmediğini dikte etmeli? Korkunç argüman.
samrap

2
Şahsen, bu, devs kodunun amacının ne olduğunu bilmeden körü körüne kopyalayıp yapıştırdığı çevrimiçi ortak koddan kaynaklandığını düşünüyorum.
William Isted

7
Yanıt basit, Apple: meta etiketi devre dışı bırakmayı varsayılan kapalı erişilebilirlik ayarı yapın. İhtiyacı olanlar, ihtiyacı olmayanları cezalandırmadan buna sahip olacaklar.
Ruben Martinez

Yanıtlar:


94

İOS 10'da safari'de web sayfası ölçeklendirmesini önlemek mümkündür, ancak sizin açınızdan daha fazla çalışma gerektirecektir. Argüman, bir derece zorluğun, kargo-kült geliştiricilerinin her kullanıcı portu etiketine "user-scalable = no" düşürmesini ve görme engelli kullanıcılar için gereksiz yere zor hale getirmesini durdurması gerektiğidir.

Yine de, Apple'ın uygulamalarını değiştirdiğini görmek istiyorum, böylece yakınlaştırmak için çift dokunmayı devre dışı bırakmanın basit (meta-tag) bir yolu var. Zorlukların çoğu bu etkileşim ile ilgilidir.

Tutam-yakınlaştırmayı aşağıdaki gibi bir şeyle durdurabilirsiniz:

document.addEventListener('touchmove', function (event) {
  if (event.scale !== 1) { event.preventDefault(); }
}, false);

Daha derin hedefler olayda stopPropagation'ı çağırırsa, olayın belgeye ulaşmayacağını ve ölçekleme davranışının bu dinleyici tarafından engellenmeyeceğini unutmayın.

Yakınlaştırmak için çift dokunmayı devre dışı bırakmak benzerdir. Belgedeki herhangi bir dokunmayı önceki dokunmadan 300 milisaniye içinde devre dışı bırakırsınız:

var lastTouchEnd = 0;
document.addEventListener('touchend', function (event) {
  var now = (new Date()).getTime();
  if (now - lastTouchEnd <= 300) {
    event.preventDefault();
  }
  lastTouchEnd = now;
}, false);

Form öğelerinizi doğru şekilde ayarlamazsanız, bir girişe odaklanmak otomatik yakınlaştırma yapar ve çoğunlukla manuel yakınlaştırmayı devre dışı bıraktığınız için, şimdi unzoom'un açılması neredeyse imkansız olacaktır. Giriş yazı tipi boyutunun> = 16 piksel olduğundan emin olun.

Bunu yerel bir uygulamadaki bir WKWebView'de çözmeye çalışıyorsanız, yukarıda verilen çözüm uygulanabilir, ancak bu daha iyi bir çözümdür: https://stackoverflow.com/a/31943976/661418 . Diğer yanıtlarda belirtildiği gibi, iOS 10 beta 6'da Apple şimdi meta etiketi onurlandırmak için bir bayrak sağladı.

Mayıs 2017 Güncellemesi: Sıkıştırma yakınlaştırmayı devre dışı bırakma için eski 'dokunmatik başlangıçta dokunma uzunluğunu kontrol et' yöntemini daha basit bir 'check event.scale on touchmove' yaklaşımıyla değiştirdim. Herkes için daha güvenilir olmalı.


3
Touchstart hack'in tutarsız olduğunu unutmayın ... ve eğer kaldırmayı başarırsanız çok rahatsız edici bir durumda kalırsınız
Sam Saffron

5
Örneğin. tam ekran haritalama uygulamaları, haritalama uygulamasında (Google Maps JS, Leaflet vb.) sabit kodlanmış bir yakınlaştırma özelliği vardır. Google bir meta etiket eklemeyi önerir <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />ve tarayıcı meta etikete uymuyorsa, tarayıcı tasarımı çok kötüdür. Çok kötü tasarım gibi diğer, iOS 9 / 10'da önlenemeyen kaydırılarak geri / ileri harekettir. Web uygulaması içindeki eylemleri ciddi şekilde sürükleyerek kırıyor.
Timo Kähkönen

4
Kullanıcı bir parmağınızla sürüklemeye başlarsa, ekranda ikinci bir parmak koymak kıstırarak yakınlaştırma yapabilir. Bir ile hem zoom ve kaydırma devre dışı bırakabilir preventDefaulttarihinde adlı touchmove. Kaydırma özelliğini devre dışı bırakmadan zumu (tamamen) devre dışı bırakamazsınız.
Paolo

10
Vay canına, bu kısmı (buraya yapıştıracağım) bana SÜPER yardımcı oldu. Ben internette HER YERDE başka kimse tarafından belirtilen bu görmedim. Bu sorunu düzeltmek saatlerimi aldı. Apple'ın UX tasarım seçeneklerinde gerçekten hayal kırıklığına uğradım, burada formlar otomatik olarak yakınlaştırılıyor, ancak daha sonra uzaklaşmıyor. If you don't set up your form elements right, focusing on an input will auto-zoom, and since you have mostly disabled manual zoom, it will now be almost impossible to unzoom. Make sure the input font size is >= 16px.
Ryan

6
Görünüşe göre bu artık iOS 12'de çalışmıyor. Bunun iOS 12 için nasıl çalışacağı hakkında bir fikriniz var mı?
TJR

78

Bu, iOS 10'daki yeni bir özelliktir.

İOS 10 beta 1 sürüm notlarından:

  • Safari'deki web sitelerindeki erişilebilirliği artırmak için, kullanıcılar artık bir web sitesi user-scalable=nogörünüm penceresinde ayarlandığında bile yakınlaştırma / uzaklaştırma yapabilir .

Bunu bir şekilde devre dışı bırakmak için yakında bir JS eklentisi göreceğimizi umuyorum.


4
@Onza: Bunun kötü olduğunu düşünmüyorum. Bence iyi. Sıkıştırma / yakınlaştırmayı devre dışı bırakma (varsayılan kullanıcı davranışı) kötü olarak kabul edilir ve birçok mobil web sitesi bunu yapar. Kabul edilebilir tek kullanıcı durumu, bir uygulama gibi görünen ve hissedilen gerçek bir web uygulaması olacaktır.
wouterds

6
Kötü .. js kullanarak görünüm değiştirmek ve web sitesinde bazı öğeler seçildiğinde şimdi yakınlaştırma engeller Şimdi bu "karar" nedeniyle kırık. Birisi engellemeye karar verirse - bir nedeni vardır.
Zhenya

9
@Karlth bir oyun geliştiricisi için çok yatak
Sandeep

14
IOS 10.0.2 var, kullanıcı-ölçeklenebilir = hayır web sitemizde yakınlaştırmayı artık devre dışı bırakmıyor ... Yakınlaştırma ile ana sorun sabit yan menü ile .. Sadece düzeni kırar .. Bu konuda herhangi bir fikir veya çözümler? Yakınlaştırmanın erişilebilirlik için iyi olduğunu anlıyoruz, js olayları (çekiç) ve css kullanarak sitemizin belirli bölümlerinde yakınlaştırma sağladık. Neden herkese bir kural uygulanması gerektiğini anlamıyorum, PC Polisi başlıyor gibi görünüyor dev dünyamızı da ele geçirmek için ?!
webkit

50
"Kabul edilebilir tek kullanıcı durumu, bir uygulama gibi görünen ve hissedilen gerçek bir web uygulaması olacaktır." - ve bu, dediğin gibi, gerçek, kabul edilebilir bir kullanım örneği, bu nadir değil ..
Florrie

21

touch-actionTek tek öğeler üzerinde css özelliğini kullanarak bu düzeltmek mümkün . touch-action: manipulation;Bağlantılar veya düğmeler gibi yaygın olarak tıklanan öğeleri ayarlamayı deneyin .


1
"manipülasyon" tutam zum yapmayı engellemez, sadece zumla çift dokunun.
Moos

4
Bu kabul edilen cevap olmalı. touch-action: none;tüm hareketleri kendiniz kontrol etmek için kullanabilirsiniz .
Guy Sopher

4
bu harika - tutam zumlamadan çıkarken çift dokunmalı zum yapmayı devre dışı bırakmak, bu bir jest olarak görülmelidir - çift dokunma olmamalıdır. 1 köpek bir köpektir. 1 köpek + 1 köpek uzay mekiği yapmaz. 2 köpek yapar ve 2 köpek yapmasını beklediğiniz şeyleri yaparlar. Asla 2 köpek uzay mekiği olmasını beklemiyorduk. Asla.
Larry

5
@GuySopher iOS mu değil sağlamak touch-action: nonesadece manipulatoinolduğu gibi sıkıştırarak yaklaştırma sorunu bırakır.
humanityANDpeace

14

Bu davranışın, yazım sırasında beta 6 olan en son betada değiştiği anlaşılıyor.

İOS 10 Beta 6 sürüm notlarından:

WKWebViewartık varsayılan olarak user-scalable=nobir görünüm penceresinden saygı duymaktır. Müşteriler WKWebViewerişilebilirliğini iyileştirmek ve kullanıcıları pinch-to-zoom için tüm sayfalarda ayarlayarak izin verebilir WKWebViewConfiguration özelliği ignoresViewportScaleLimitsiçin YES.

Ancak, (çok sınırlı) testlerimde, bunun böyle olduğunu henüz doğrulayamıyorum.

Düzenleme: doğrulandı, iOS 10 Beta 6 user-scalable=novarsayılan olarak benim için saygı duyuyor .


11
10.0.1 burada. Buna saygı duymaz. Apple herkesin ihtiyaç duyduğu özelliklerden kurtulmak ile ..
lifwanian

1
Bu Safari için WKWebView değil . Kaynak: Harita uygulamalarımızdan biri bozuldu ve nasıl düzeltileceğimiz hakkında hiçbir fikrimiz yok .
Fabio Poloni

Aha! Özür dilerim, aynı hata / özellik için çözüm ararken buraya geldim WKWebViewve orijinal sorunun WKWebViewcevabımı yazarken sorduğunu varsaydım . Bu nedenle, ilk beta sürümlerden birinde Apple'ın hem WKWebViewmobil Safari'nin hem de mobil Safari'nin davranışını değiştirdiğini , ardından beta 6'da davranışlarını geri aldıklarını WKWebViewancak mobil Safari için sakladıklarını varsayıyorum.
Cellane

1
10.0.2 saygı göstermez user-scalable=no. Bunu neden geri alabileceklerinden emin değilim, sadece geri getirmek için, sadece tekrar kaldırmak için.
Aidan Hakimian

13

Bu yazarken Mobile Safari'de çalışan geçici çözüm, üçüncü argümanın olması addEventListenergerektiğinden { passive: false }, tam çözüm aşağıdaki gibi görünür:

document.addEventListener('touchmove', function (event) {
  if (event.scale !== 1) { event.preventDefault(); }
}, { passive: false });

Geriye dönük olarak uyumlu kalmak için seçeneklerin desteklenip desteklenmediğini kontrol etmek isteyebilirsiniz .


3
Bunu iOS 12'de deneyen var mı? Yukarıdaki kodu ekledim ve benim webapp için hiçbir şey yapmıyor. Yine de bu aptal Safari'yi yakınlaştırabilir. Bu Btw gibi Benim meta görünüm etiketi görünüyor: <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">.
Patrick DaVader

1
@PatrickDaVader Evet, iOS 12 Safari için herhangi bir çalışma çözümü bulamıyorum. Kesintisiz yakınlaştırmadan deniz tutması.
Jamie Birch

1
Bu iOS 13'te çalışıyor. <meta> Etiketlerim şunları içerir: <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover, user-scalable=no, shrink-to-fit=no" />ve<meta name="HandheldFriendly" content="true">
Sterling Bourne

1
@SterlingBourne Kurulumunuzu kopyaladı. Çalışır, ancak zamanın sadece% 90'ı gibi. Neden her zaman emin değilim.
Hillcow

1
@SterlingBourne yanıtı benim için çalıştı! Teşekkürler. <Meta name = "viewport" content = "width = cihaz genişliği, başlangıç ​​ölçeği = 1, maksimum ölçek = 1, viewport-fit = cover olarak seçilebilmesi için bir yorum yerine yanıt olarak göndermesi gerekir. user-scalable = no, sığacak sığdır = hayır "/> ve <meta name =" HandheldFriendly "content =" true ">
Gene Black

8

Daha sağlam bir javascript seçeneği arayan yaklaşık bir saat geçirdim ve bir tane bulamadık. Öyle ki, son birkaç gündür hammer.js ile uğraşıyorum (Hammer.js, her türlü dokunma olayını kolayca idare etmenizi sağlayan bir kütüphane) ve çoğunlukla yapmaya çalıştığım şeyde başarısız oldu.

Bu uyarı ve hiçbir şekilde bir javascript uzmanı olduğumu anlamakla, bu, çimdik yakınlaştırma ve çift dokunma olaylarını yakalamak ve daha sonra bunları günlüğe kaydetmek ve atmak için hammer.js'den temel olarak yararlandığım bir çözüm.

Sayfanıza hammer.js'yi eklediğinizden emin olun ve bu javascript'i kafaya bir yere yapıştırmayı deneyin:

< script type = "text/javascript" src="http://hammerjs.github.io/dist/hammer.min.js"> < /script >
< script type = "text/javascript" >

  // SPORK - block pinch-zoom to force use of tooltip zoom
  $(document).ready(function() {

    // the element you want to attach to, probably a wrapper for the page
    var myElement = document.getElementById('yourwrapperelement');
    // create a new hammer object, setting "touchAction" ensures the user can still scroll/pan
    var hammertime = new Hammer(myElement, {
      prevent_default: false,
      touchAction: "pan"
    });

    // pinch is not enabled by default in hammer
    hammertime.get('pinch').set({
      enable: true
    });

    // name the events you want to capture, then call some function if you want and most importantly, add the preventDefault to block the normal pinch action
    hammertime.on('pinch pinchend pinchstart doubletap', function(e) {
      console.log('captured event:', e.type);
      e.preventDefault();
    })
  });
</script>


Ayrıca hammer.js ile çalışırken bu sorunu çözmeye çalışıyorum ve .preventDefaulttüm çekiç hareketi işleyicilerine bir ekleyerek görünüm alanı yakınlaştırmasını önleyebileceğimi doğrulayabilirim . Swipe / pinch / pan / tap'ı birlikte kullanıyorum, tüm işleyicilere ekledim, işi yapan belirli bir tane olup olmadığını bilmiyorum.
Conan

6

Kıstırma-yakınlaştırma ile ilgili önceki yanıtı denedim

document.documentElement.addEventListener('touchstart', function (event) {
    if (event.touches.length > 1) {
        event.preventDefault();
    }
}, false);

ancak event.touches.length> 1 olduğunda ekran hala yakınlaşır > 1 Ekranda herhangi bir parmağın hareket etmesini önlemek için touchmove olayını kullanmanın en iyi yolunu buldum. Kod şöyle bir şey olacaktır:

document.documentElement.addEventListener('touchmove', function (event) {
    event.preventDefault();      
}, false);

Umarım yardımcı olur.


7
Bu yalnızca uygulamanız mükemmel bir uyum sağlıyorsa çalışır ... kaydırılabilir içeriğiniz varsa işe yaramaz ... bazı senaryolar için hala güzel bir kesmek.
eljamz

8
Bu bile web sitesinde kaydırma devre dışı bırakır .. KÖTÜ
Gags

@eljamz bana haber için teşekkürler ve evet .. benim app ekranda mükemmel uyum.
Chihying Wu

@Gags Henüz kaydırma işlevini test etmedim, bana bildirin.
Chihying Wu

6

Touchove olayında ölçek faktörü olup olmadığını kontrol edin, ardından dokunma olayını önleyin.

document.addEventListener('touchmove', function(event) {
    event = event.originalEvent || event;
    if(event.scale > 1) {
        event.preventDefault();
    }
}, false);

2
iOS 13, false değerini {passive: false} olarak değiştirdi
wayofthefuture

6

İstediğimiz her şeyi bir stil kuralı enjekte ederek ve yakınlaştırma olaylarına müdahale ederek elde edebiliriz:

$(function () {
  if (!(/iPad|iPhone|iPod/.test(navigator.userAgent))) return
  $(document.head).append(
    '<style>*{cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}</style>'
  )
  $(window).on('gesturestart touchmove', function (evt) {
    if (evt.originalEvent.scale !== 1) {
      evt.originalEvent.preventDefault()
      document.body.style.transform = 'scale(1)'
    }
  })
})

Pin Sıkıştırma zumunu devre dışı bırakır.

✔ Çift dokunma yakınlaştırmayı devre dışı bırakır.

✔ Kaydırma etkilenmez.

Tap Hafifçe vurma özelliğini devre dışı bırakır (iOS'ta stil kuralı tarafından tetiklenir).

DİKKAT: iOS algılamasını beğeninize göre değiştirin. Burada daha fazlası .


Cevapları yukarıdaki kodda değiştirilmiş olarak görünen lukejackson ve Piotr Kowalski'den özür dileriz .


Bu, iOS 11.2 çalıştıran iPad emülatörümde çalışıyor. İOS 11.3 çalıştıran gerçek iPad'imde çalışmıyor. Olayların tetiklendiğinden ve böylece konsolda görünmesini sağlamak için bir console.log ekledim. İOS 11.3 ile bir ilgisi var mı? Yoksa gerçek cihazlarla mı?
Mathieu R.

1
@MathieuR. Bu bir iOS 11.3 sorunudur. Bu birini kullanarak giderilebilir addEventListenergöre cevaplar ve geçme { passive: false }olarak optionsyerine parametresi false. Ancak, geriye dönük uyumluluk falseiçin passiveseçenek alanı desteklenmedikçe geçmeniz gerekir . Bkz. Developer.mozilla.org/tr-TR/docs/Web/API/EventTarget/…
Josh Gallagher

@JoshGallagher Çalışan bir örnek verebilir misiniz? İOS11'de cevapların hiçbiri benim için çalışmıyor.
Mick

'Gesturestart' -> preventDefault, iOS 12,2'de yazarken benim için çalışıyor
Michael Camden

5

Oldukça naif bir çözüm buldum, ama işe yarıyor gibi görünüyor. Amacım, kazara çift dokunmanın yakınlaştırma olarak yorumlanmasını önlemek ve erişilebilirlik için yakınlaştırmak için çimdik tutmaktı.

Fikir, çift ​​dokunuşta birinci touchstartve ikinci touchendarasındaki süreyi ölçmek ve daha sonra touchendgecikme çok küçükse sonuncuyu tıklama olarak yorumlamaktır . Yanlışlıkla yakınlaştırmayı önlerken, bu yöntem listenin kaydırılmasından etkilenmez gibi görünüyor, bu da güzel. Yine de bir şey kaçırmadım emin değilim.

let preLastTouchStartAt = 0;
let lastTouchStartAt = 0;
const delay = 500;

document.addEventListener('touchstart', () => {
  preLastTouchStartAt = lastTouchStartAt;
  lastTouchStartAt = +new Date();
});
document.addEventListener('touchend', (event) => {
  const touchEndAt = +new Date();
  if (touchEndAt - preLastTouchStartAt < delay) {
    event.preventDefault();
    event.target.click();
  }
});

Kuşatma ve Joseph'in cevabından bir esinlenerek ilham aldı .


5

Benim özel durumumda, bir 3D sahne oluşturmak için Babylon.js kullanıyorum ve tüm sayfam bir tam ekran tuvalden oluşuyor. 3D motorun kendi yakınlaştırma işlevi vardır, ancak iOS'ta kıstırma ile yakınlaştırma buna engel olur. Sorunumun üstesinden gelmek için @Joseph cevabını güncelledim. Devre dışı bırakmak için, olay dinleyicisine bir seçenek olarak {passive: false} iletmem gerektiğini anladım. Aşağıdaki kod benim için çalışıyor:

window.addEventListener(
    "touchmove",
    function(event) {
        if (event.scale !== 1) {
            event.preventDefault();
        }
    },
    { passive: false }
);

Benim kullanım durumum da özel tutam kontrolleri ile tam sayfa 3d sahne. Apple için kullanıcı ölçeğini açıkça görmezden gelmenin bir yolu olmasaydı batırırdım: meta yok.
Nick Bilyk

1

Göründüğü kadar garip, en azından iOS 10.2'deki Safari için, öğeniz veya atalarından herhangi biri aşağıdakilerden birine sahipse yakınlaştırmak için çift dokunma sihirli bir şekilde devre dışı bırakılır:

  1. Bir onClick dinleyicisi - basit bir noop olabilir.
  2. cursor: pointerCSS'de bir set

çimdiklemeye ne dersin?
Sam Su

Ne yazık ki, yakınlaştırma / uzaklaştırma tutam bu çözümün kapsamında değildir. Bunun için önerilen çözümü kullandık: stackoverflow.com/a/39594334/374196
mariomc

Benim için çalışmıyor. Bu test sayfasını kullanarak bir iPod Touch üzerinde 10.2.1 Beta 4 kullanıyorum ve gri karelerden herhangi birine çift dokunarak zoom yapıyorum
robocat

1
Ben bir tepki app bir açıklık var ve çalışmıyor.
FMD

1

İstenmeyen yakınlaştırma aşağıdaki durumlarda gerçekleşir:

  • Kullanıcı arayüzün bir bileşenine iki kez dokunur
  • Bir kullanıcı iki veya daha fazla hane (görünüm) kullanarak görünüm penceresiyle etkileşime girer

Çift dokunma davranışını önlemek için iki çok basit geçici çözüm buldum:

<button onclick='event.preventDefault()'>Prevent Default</button>
<button style='touch-action: manipulation'>Touch Action Manipulation</button>

Bunların her ikisi de Safari'nin (iOS 10.3.2) düğmeyi yakınlaştırmasını önler . Birinin yalnızca JavaScript olduğunu, diğerinin yalnızca CSS olduğunu görebilirsiniz. Uygun şekilde kullanın.

İşte bir demo: https://codepen.io/lukejacksonn/pen/QMELXQ

Sıkıştırma davranışını önlemeye çalışmadım (henüz), çünkü öncelikle web için çoklu dokunmatik arayüzler oluşturma eğiliminde değilim ve ikinci olarak belki de yerel uygulama kullanıcı arayüzü dahil tüm arayüzlerin "yakınlaştırmak için çimdik" olması gerektiği fikrine geldim. yerlerde kullanılabilir. Hala kullanıcı önlemek için dizayn ediyorum haiz ne pahasına olursa olsun, onlara UI erişilebilir hale getirmek için bunu yapmak.


1

Yakınlaştırmak için çift tıklamayı önleyen bu basit işi bulundu:

    // Convert touchend events to click events to work around an IOS 10 feature which prevents
    // developers from using disabling double click touch zoom (which we don't want).
    document.addEventListener('touchend', function (event) {
        event.preventDefault();
        $(event.target).trigger('click');
    }, false);

1

İstendiği gibi, yorumumu bir cevaba aktardım, böylece insanlar bunu oylayabilir:

Bu, iOS 13 için% 90 oranında çalışır:

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover, user-scalable=no, shrink-to-fit=no" />

ve

<meta name="HandheldFriendly" content="true">


0

Yukarıdaki tüm cevapları pratikte iOS sayfam (iPhone 6, iOS 10.0.2) ile kontrol ettim, ancak başarılı olamadım. Bu benim çalışma çözümüm:

$(window).bind('gesturestart touchmove', function(event) {
    event = event.originalEvent || event;
    if (event.scale !== 1) {
         event.preventDefault();
         document.body.style.transform = 'scale(1)'
    }
});

Ne yazık ki bu, yalnızca sayfanız mükemmel bir şekilde sığdığında işe yarar, kaydırılabilir içeriğiniz olduğunda değil
Shoe

Hmm. Deneyimlerime göre (iOS 10.3) kaydırılabilir içerikle iyi çalışıyor.
jeff_mcmahan

0

bu benim için çalıştı:

document.documentElement.addEventListener('touchmove', function (event) {
    event.preventDefault();
}, false);

Bunu denedim, çimdik yakınlaştırmayı engelledi, ancak görünümün dokunmatik kaydırmasını devre dışı bıraktı, böylece sayfayı yukarı ve aşağı kaydıramazsınız.
TGR
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.