Тег области просмотра Blackberry Webworks 2.0 не работает

Я создаю приложение с BlackBerry Webworks 2.0 для BlackBerry Z10. С bbui-min.js версии 0.9.6.932.

Кажется, я не могу изменить область просмотра приложения. Я хочу иметь возможность увеличивать масштаб, который обычно работает со следующим определением окна просмотра в моем html:

<meta name="viewport" content="user-scalable=yes"/>

Этот тег не оказывает никакого влияния при использовании функции bb.init(). Если я не вызываю функцию bb.init(), тег окна просмотра имеет влияние.

Вероятно, это связано с тем, что в 0.9.4 было реализовано следующее:

Вы больше не указываете метатег области просмотра в своем основном файле index.htm. Теперь это предоставляется набором инструментов во время выполнения в зависимости от версии ОС.

См.: http://devblog.blackberry.com/2012/10/bbui-js-update/

Теперь вопрос: Как изменить вьюпорт, ведь очень хотелось бы указать его самому.


person MaartenHurkens    schedule 17.04.2014    source источник


Ответы (1)


Сначала я объясню, почему вам не следует этого делать, а затем покажу способ достижения этого, если вы все еще хотите двигаться вперед:

bbUI.js — это фреймворк, который позволяет вам предоставлять собственный интерфейс с использованием веб-языков. Увеличение не является желаемой функцией в собственном приложении по нескольким причинам, одна из которых заключается в том, что это уродливо и приводит к плохому взаимодействию с пользователем. Если вам нужна возможность масштабирования определенного компонента, а не всего приложения, существуют обходные пути, но вы не должны касаться окна просмотра.

Проще говоря: это не родной опыт, который хотел бы иметь ваш пользователь.

Если вас не беспокоит взаимодействие с пользователем и вы хотите полностью контролировать область просмотра, вам необходимо изменить файл bbUI.js, в частности строку 73: https://github.com/blackberry/bbUI.js/blob/master/pkg/bb10/bbui.js

Код выглядит так

// Check if a viewport tags exist and remove them, We'll add the bbUI friendly one 
    var viewports = document.head.querySelectorAll('meta[name=viewport]'),
        i;
    for (i = 0; i < viewports.length; i++) {
        try {
            document.head.removeChild(viewports[i]);
        } catch (ex) {
            // Throw away the error
        }
    }           

    // Set our meta tags for content scaling
    var meta = document.createElement('meta');
    meta.setAttribute('name','viewport');
    if (!bb.device.is1024x600) { 
        meta.setAttribute('content','initial-scale='+ (1/window.devicePixelRatio) +',user-scalable=no');
    } else {
        meta.setAttribute('content','initial-scale=1.0,width=device-width,user-scalable=no,target-densitydpi=device-dpi');
    }

как вы можете видеть, фрагмент удаляет область просмотра, которую вы определяете, и заменяет ее пользовательской. Внесите свои изменения и используйте этот файл вместо оригинального.

person Luca S.    schedule 22.04.2014