我正在使用它:
//if in landscape mode
while(window.orientation == 90 || window.orientation == -90) {
if(!$('#page' + hiddenNextPage).hasClass('showUp')) {
$('#page' + hiddenNextPage).addClass('showUp');
$('#page' + hiddenNextPage).css('margin-left', '300px');
};
}
//if in portrait mode
while(window.orientation == 0) {
if($('#page' + hiddenNextPage).hasClass('showUp')) {
$('#page' + hiddenNextPage).removeClass('showUp');
$('#page' + hiddenNextPage).css('margin-left', '5px');
};
};
但它使我的页面不再加载..&加载这个需要这么长时间。它有什么问题吗?
是否有更好的方法可以不使用while循环不断检查方向是否已更改?
这是针对ipad / iphone的 谢谢!
答案 0 :(得分:6)
我没有看到你的while循环体正在修改while测试。这会产生无限循环。
答案 1 :(得分:5)
由于您只是在更改样式,因此可以使用单独的样式表来处理纵向和横向...
<link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css">
<link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css">
修改强>
onorientationchange
上还有一个window
事件,它允许您在方向更改时运行代码,而不是不断轮询更改...
window.onorientationchange = function (event)
{
if (window.orientation == 90 || window.orientation == -90)
{
...
}
else
{
...
}
}
答案 2 :(得分:3)
我认为你根本不应该使用while循环。
如果要定期执行代码,请使用超时或间隔。
此外,您的jQuery效率非常低 - 尤其是如何多次重新运行选择器。
var $nextPage = $('#page' + hiddenNextPage );
window.setInterval( function()
{
if ( 0 == window.orientation )
{
if ( $nextPage.hasClass( 'showUp' ) )
{
$nextPage
.removeClass( 'showUp' )
.css( 'margin-left', '5px' )
;
}
}
else if ( !$nextPage.hasClass( 'showUp' ) )
{
$nextPage
.addClass( 'showUp' )
.css( 'margin-left', '300px' )
;
}
}, 100 ); // 100 means this will execute every 100 milliseconds
答案 3 :(得分:2)
我建议使用单独的样式表,但到目前为止,您不断检查的问题可以通过setInterval ( expression, interval );
设置超时时间。
例如:
setInterval(function() {
if ((window.orientation == 90 || window.orientation == -90) {
if(!$('#page' + hiddenNextPage).hasClass('showUp')) {
$('#page' + hiddenNextPage).addClass('showUp');
$('#page' + hiddenNextPage).css('margin-left', '300px');
}
} else if (window.orientation == 0) {
if($('#page' + hiddenNextPage).hasClass('showUp')) {
$('#page' + hiddenNextPage).removeClass('showUp');
$('#page' + hiddenNextPage).css('margin-left', '5px');
}
}
}
, 2000 );
编辑第一次意外使用setTimeout而不是setInterval,oops。