我正在使用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/
现在的问题是:如何更改视口,因为我真的想自己指定它。
答案 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');
}
正如您所看到的那样,代码段会删除您定义的视口,并将其替换为自定义视口。进行修改并使用此文件而不是原始文件。