Есть ли способ reset масштаб окна просмотра динамически 1.0

Я работаю над мобильным интернет-магазином И застрял во время реализации функции масштабирования продукта

После щелчка на изображении разрешено "масштабируемое пользователем", а максимальное значение - 10,0 Когда пользователь нажимает на устройство с жестким жестом, все работает нормально. Но после закрытия увеличенного изображения масштаб не равен reset до 1.0.

Есть ли способ reset масштабировать значение окна просмотра динамически. "Начальная шкала", похоже, не работает, и не отменяет "минимальную шкалу" и "максимальную шкалу" до 1.0

Проблемы возникают на iPhone/iPad

Кажется, что есть решение, но я не знаю, к какому элементу я должен применить этот пост: Как reset масштабирование видового экрана без полного обновления страницы?

"Вам нужно использовать -webkit-transform: scale (1.1), переход webkit."

Но я не знаю, к какому стилю применяется стиль.

Вот какой код иллюстрирует проблему.

В метатеге для окна просмотра выглядит так:

<meta name="viewport" content="user-scalable=no, width=device-width, height=device-height, minimum-scale=1.0, maximum-scale=1.0" />

остальная часть страницы выглядит следующим образом:

<div id="page">
    <img src="images/smallProductImage.jpg">
</div>

<div id="zoom">
    <div class="jsZoomImageContainer"></div>
</div>

и это javascript::

zoom:{
    img: null,
    initialScreen:null,

    load:function(src){             

        //load the image and show it when loaded

        showLoadingAnimation();
        this.img = new Image();
        this.img.src = src;

        jQuery(this.img).load(function(){
            zoom.show();
        });
    },

    show:function(){

        var screenWidth, screenHeight, imageWidth, imageHeight, scale, ctx;             

        hideLoadingAnimation();
        jQuery("#page").hide();         
        jQuery("#zoom").show();

        jQuery(".jsZoomImageContainer").empty();
        this.initialScreen =[jQuery(window).width(),  jQuery(window).height()]
        jQuery(".jsZoomImageContainer").append(this.img);               


        imageWidth = jQuery(this.img).width();
        imageHeight = jQuery(this.img).height();

        scale = this.initialScreen[0] / imageWidth ;

        jQuery(this.img).width(imageWidth * scale)
        jQuery(this.img).height(imageHeight * scale)


        jQuery(".jsZoomImageContainer").click(function(){
             zoom.hide();
        });

        jQuery('meta[name="viewport"]',"head").attr("content","user-scalable=yes, initial-scale:1.0, minimum-scale=1.0, maximum-scale=10.0")                 

    },

    hide:function(){                        
        jQuery(".jsZoomImageContainer").empty();                        
        jQuery('meta[name="viewport"]',"head").attr("content","user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0") 

        jQuery("#zoom").hide();
        jQuery("#page").show();

        this.img = null;
        this.initialScreen = null;

    }
}

jQuery("#page img").click(function(){
    zoom.load("images/bigProductImage.jpg");
});

Ответы

Ответ 1

Согласно ppk, этот метод манипуляции с видовым окном работает во всех современных браузерах, кроме Firefox:

<meta id="testViewport" name="viewport" content="width = 380">
<script>
if (screen.width > 740) {
    var mvp = document.getElementById('testViewport');
    mvp.setAttribute('content','width=740');
}
</script>

Кажется, что ключ устанавливает атрибут id в теге meta, поэтому вы можете легко его выбрать с помощью JS и заменить значение атрибута content.

Ответ 2

Он работает во всех современных браузерах. Я сделал это на нескольких веб-сайтах, и все работает нормально. Но сброс не является решением проблемы. При изменении обстоятельств необходимо изменить масштаб и ширину окна просмотра. Вы должны изменить его, когда меняется ориентация, и когда размер экрана изменяется и, конечно, при загрузке при обнаружении размера экрана. Если вы получите значения для текущей ширины, вы можете рассчитать масштаб. (Кстати, когда ориентация 90 или -90, вы должны взять высоту как ширину). Например, Если ваш основной контейнер имеет ширину 960 пикселей, а w_width - это текущая ширина, которую вы получаете динамически.

scale=100/100/(960/w_width);
scale=scale.toFixed(2) ;
jQuery('meta[name=viewport]').attr('content', "width="+w_width+", initial-scale="+scale);