diff --git a/src/pyj/read_book/viewport.pyj b/src/pyj/read_book/viewport.pyj index c2db19f19f..d4d73d4452 100644 --- a/src/pyj/read_book/viewport.pyj +++ b/src/pyj/read_book/viewport.pyj @@ -5,7 +5,7 @@ from __python__ import bound_methods, hash_literals FUNCTIONS = 'x y scroll_to scroll_into_view reset_globals __reset_transforms window_scroll_pos content_size'.split(' ') from read_book.globals import get_boss, viewport_mode_changer -from utils import document_height, document_width, is_ios +from utils import document_height, document_width, ios_major_version class ScrollViewport: @@ -321,7 +321,7 @@ class IOSScrollViewport(ScrollViewport): self.__reset_transforms() -if is_ios: +if 1 < ios_major_version < 15: scroll_viewport = IOSScrollViewport() else: scroll_viewport = ScrollViewport() diff --git a/src/pyj/utils.pyj b/src/pyj/utils.pyj index 362c9aa3ab..df5a9dc74c 100644 --- a/src/pyj/utils.pyj +++ b/src/pyj/utils.pyj @@ -8,9 +8,14 @@ from book_list.theme import get_font_family is_ios = v'!!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform)' +ios_major_version = 0 if !is_ios and v'!!navigator.platform' and window? and window.navigator.platform is 'MacIntel' and window.navigator.maxTouchPoints > 1: # iPad Safari in desktop mode https://stackoverflow.com/questions/57765958/how-to-detect-ipad-and-ipad-os-version-in-ios-13-and-up is_ios = True +if is_ios: + v = v'navigator.appVersion.match(/OS (\d+)/)' + if v and v[1]: + ios_major_version = parseInt(v[1], 10) or 0 def default_context_menu_should_be_allowed(evt):