7

Webkit năm ngoái removed the 350ms delay for iOS. Khi tôi chạy trang web của mình trong trình duyệt trên thiết bị di động của Safari, sự chậm trễ không còn tồn tại và hoạt động như mong đợi.Ứng dụng độc lập iOS 300ms Nhấp vào Trì hoãn

Tuy nhiên, khi tôi chạy ứng dụng web của mình trong standalone mode, sự chậm trễ tồn tại và rõ ràng là hiển nhiên.

Dưới đây là metatag của tôi mà tôi đang sử dụng: Các biến thể

<meta name="viewport" content="initial-scale=1.0, user-scalable=no, maximum-scale=1, width=device-width"> 

Tôi đã thử các loại, mà không may mắn.

Thật khó để tìm thấy bất kỳ điều gì về các ứng dụng độc lập, không có vấn đề rõ ràng này.

Có ai biết tại sao nhấp chuột chậm trễ 350ms này chỉ xảy ra ở chế độ độc lập không? Để giải quyết vấn đề này, tôi phải mang fastclick vào dự án, điều này không lý tưởng.

Lưu ý: Tôi đang chạy iOS 9.3.5/iPhone 6

+1

Vấn đề này dường như được cố định hiện nay trong iOS 11 ứng dụng web độc lập. Xem thêm: https://forums.developer.apple.com/thread/43415 – user2309038

Trả lời

9

Có vẻ là không có cách giải quyết bản xứ, và điều này dường như là một vấn đề được biết đến, bất kể being fixed in webkit.

Begin Rant

Táo không hỗ trợ và chú ý đến từng chi tiết cho ứng dụng độc lập thực sự không thể tin được; đặc biệt là phiên bản 9.3.5.

Giữa vấn đề này và chính Youtube player issue trên các ứng dụng độc lập. Có lẽ Apple nên ngừng lo lắng về loại bỏ các jack cắm tai nghe, và thêm một số huyền bí "Touch Bar, và thực sự sửa chữa nền tảng chết tiệt của họ.

End Rant

Bạn sẽ phải sử dụng FastClick để giải quyết vấn đề này. Áp dụng chỉ với iOS, bạn có thể tiếp tục và chỉ áp dụng cho các ứng dụng độc lập, vì ứng dụng này hoạt động tốt nếu ứng dụng không ở trạng thái độc lập

Thẻ script của tôi được đặt sau DOM và khởi tạo như sau :

if (isIos() && isRunningStandalone()) { 
     // Initialize Fast Click 
     // Even with the latest webkit updates, unfortunatley iOS standalone apps still have the 350ms click delay, 
     // so we need to bring in fastclick to alleviate this. 
     // See https://stackoverflow.com/questions/39951945/ios-standalone-app-300ms-click-delay 
     if ('addEventListener' in document) { 
      document.addEventListener('DOMContentLoaded', function() { 
       FastClick.attach(document.body); 
      }, false); 
     } 
    } 

    isIos = function() { 
     // Reference: https://stackoverflow.com/questions/9038625/detect-if-device-is-ios#answer-9039885 
     return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; 
    }; 

    isRunningStandalone = function() { 
     // Bullet proof way to check if iOS standalone 
     var isRunningiOSStandalone = window.navigator.standalone; 

     // Reliable way (in newer browsers) to check if Android standalone. 
     // https://stackoverflow.com/questions/21125337/how-to-detect-if-web-app-running-standalone-on-chrome-mobile#answer-34516083 
     var isRunningAndroidStandalone = window.matchMedia('(display-mode: standalone)').matches; 

     return isRunningiOSStandalone || isRunningAndroidStandalone; 
    }; 
+1

Cảm ơn câu trả lời gần đây này. Tôi không thể tin rằng đây vẫn là một điều trong năm 2017! Không ai từng sử dụng tính năng "chạm để cuộn xuống" của Apple… – JoLoCo

0

Dường như chạy một phiên bản trình duyệt khác khi bạn chạy nó trong độc lập, có thể là một phiên bản cũ hơn. Không biết sửa chữa cũng như ngày dự kiến ​​hoặc là tôi sợ.

Là một khắc phục, bạn có thể thử nếu ontouchend thể làm việc cho trường hợp của bạn

Các vấn đề liên quan