Blackberry Webworks 2.0视口标记无法正常工作

时间:2014-04-17 14:13:20

标签: viewport blackberry-webworks

我正在使用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/

现在的问题是:如何更改视口,因为我真的想自己指定它。

1 个答案:

答案 0 :(得分:1)

我将首先解释为什么你不应该这样做,然后告诉你一种实现它的方法,如果你还想继续:

bbUI.js是一个框架,允许您使用Web语言提供本机体验。在原生应用程序中放大并不是一个理想的功能,原因有几个,其中一个原因是它很难看,导致用户体验不佳。如果您需要放大特定组件而不是整个应用程序的功能,可以使用变通方法,但不应触摸视口。

简单地说:这不是您的用户希望拥有的原生体验。

如果您不关心用户体验并希望完全控制视口,则需要修改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');
    }

正如您所看到的那样,代码段会删除您定义的视口,并将其替换为自定义视口。进行修改并使用此文件而不是原始文件。