奇怪的行为宽度Safari(iOS)内/外宽度/高度

时间:2011-03-10 13:16:10

标签: javascript mobile-safari iphone jqtouch

我一直致力于为我们的某项服务开发移动版本,并且一直在使用jqTouch进行一些调整,并且定位功能让我有点烦恼。

因此,在尝试找到更好的方法来获取方向值(配置文件或横向)时,我发现Mobile Safari正在为innerWidth / innerHeight / outerWidth / outerHeight返回一些奇怪的值。

我已经使用iOS4的iPhone4进行了这些测试

我的测试结果:

No keyboard    |  window.innerWidth    window.innerHeight    window.outerWidth    window.outerHeight
---------------------------------------------------------------------------------------------------
Pro --> Lan    |                480                   268                  482                   420
Lan <-- Pro    |                321                   418                  321                   419
Pro <-- Lan    |                480                   268                  482                   420
Lan -->--> Lan |                480                   268                  482                   420
Lan <-- Pro    |                321                   418                  321                   419

With keyboard  |  window.innerWidth    window.innerHeight    window.outerWidth    window.outerHeight
---------------------------------------------------------------------------------------------------
Pro --> Lan    |                321                   418                  321                   419
Lan <-- Pro    |                481                   269                  481                   419
Pro <-- Lan    |                321                   418                  321                   419
Lan -->--> Lan |                481                   269                  481                   419
Lan <-- Pro    |                481                   269                  481                   419

Pro =个人资料

Lan =风景

所以Pro --> Lan表示当前方向是Profile将其顺时针移动90度到Landscape

我看到的主要问题:

    当键盘显示时,
  • window.outherHeight始终是相同的值。
  • 同样使用键盘将180度从横向旋转到横向时,返回的值是轮廓方向的预期值

如果您想进行一些进一步的测试,可以使用jqTouch配置的网页。

$(document).ready(function(){
    $('body').bind('turn', function(event, info){ var dims = $('#debug').val(); dims = dims + getDimensions(); $('#debug').val(dims); });
});

function getDimensions() {
return "screen.width = " + screen.width
     + "\nscreen.height = " + screen.height
     + "\nscreen.availWidth = " + screen.availWidth
     + "\nscreen.availHeight = " + screen.availHeight
     + "\nwindow.innerWidth = " + window.innerWidth
     + "\nwindow.innerHeight = " + window.innerHeight
     + "\nwindow.outerWidth = " + window.outerWidth
     + "\nwindow.outerHeight = " + window.outerHeight
     + "\n \n ";
}

在您的网页上的某处添加<textarea id="debug" style="width: 100%; height: 300px;"></textarea>

我所做的是按照测试结果所示进行旋转。复制textarea的内容,并通过电子邮件发送给自己。无论有没有键盘,键盘都显示你是否点击了textarea;)

0 个答案:

没有答案