2014-04-17 19 views
0

我正在为BlackBerry Z10创建一个BlackBerry Webworks 2.0应用程序。随着bbui-min.js版本0.9.6.932。Blackberry Webworks 2.0视口标签不起作用

我似乎无法改变appication的视口。我希望能够在放大通常工作在我的HTML如下视定义:

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

似乎此标记不使用bb.init()函数的时候有任何影响。如果我不调用bb.init()函数,视口标记确实有影响。

这可能是因为在0.9.4以下的已实现:

您不再指定您的主要index.htm的视口元标记。这个 现在由工具包在运行时根据OS版本提供。

参见:http://devblog.blackberry.com/2012/10/bbui-js-update/

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

回答

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'); 
    } 

您可以看到该代码片段会移除您定义的视口并将其替换为自定义视口。进行修改并使用此文件而不是原始文件。