通过JS自动隐藏手机浏览器的地址栏实现原理与代码


Posted in Javascript onJanuary 02, 2013

大家通过手机自带浏览器打开百度、淘宝,在首页加载完毕后,会自动隐藏页面上方的地址栏,加之这些网站针对手机浏览器做了优化,乍看之下,还真难区分这是WEB APP还是Native App,如下左侧图片为通过safari打开淘宝网的首页,要不是因为底下的浏览器工具栏,还真像Native App。实际上它是有地址的,向下拖动就会看到地址栏,如下右侧图片。

通过JS自动隐藏手机浏览器的地址栏实现原理与代码通过JS自动隐藏手机浏览器的地址栏实现原理与代码

如何才能实现将浏览器地址栏隐藏呢?百度一下,有很多资料,很简单,主要利用window.scrollTo()方法,将当前页面在屏幕上向上滚动,造成地址栏超出视野范围,如下:

<script> 
window.onload=function(){ 
setTimeout(function() { 
window.scrollTo(0, 1) 
}, 0); 
}; 
</script>

但若你做一个简单页面,比如只有一句话,加上如上脚本,你会悲摧的发现,地址栏就是不自动隐藏;难道window.scrollTo()方法在这个浏览器不生效?

但是若你网页内容比较多,超过屏幕高度时,却会自动隐藏地址栏;

如何解决在内容较少时,同样隐藏地址栏呢?需在滚动之前程序动态设置一下body的高度,增加如下代码:

if(document.documentElement.scrollHeight <= document.documentElement.clientHeight) { 
bodyTag = document.getElementsByTagName('body')[0]; 
bodyTag.style.height = document.documentElement.clientWidth / screen.width * screen.height + 'px'; 
}

如下为一个页面示例(默认隐藏地址栏),右图为下拉后看到地址栏的截图:

通过JS自动隐藏手机浏览器的地址栏实现原理与代码通过JS自动隐藏手机浏览器的地址栏实现原理与代码

<!DOCTYPE html> 
<html> 
<head> 
<meta charset=utf-8 /> 
<meta name="viewport" content="width=device-width, initial-scale=1,"> 
<title>我是个网页,但不显示滚动条</title> 
<script> 
window.onload=function(){ 
if(document.documentElement.scrollHeight <= document.documentElement.clientHeight) { 
bodyTag = document.getElementsByTagName('body')[0]; 
bodyTag.style.height = document.documentElement.clientWidth / screen.width * screen.height + 'px'; 
} 
setTimeout(function() { 
window.scrollTo(0, 1) 
}, 0); 
}; 
</script> 
<style> 
/*输入框圆角显示*/ 
input { 
background:#fff; border: 1px solid #080; 
padding:5px; 
-webkit-border-radius:5px; 
} 
/* button 
---------------------------------------------- */ 
.button { 
display: inline-block; 
zoom: 1; /* zoom and *display = ie7 hack for display:inline-block */ 
*display: inline; 
vertical-align: baseline; 
margin: 0 2px; 
outline: none; 
cursor: pointer; 
text-align: center; 
text-decoration: none; 
font: 14px/100% Arial, Helvetica, sans-serif; 
padding: .5em 2em .55em; 
text-shadow: 0 1px 1px rgba(0,0,0,.3); 
-webkit-border-radius: .5em; 
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2); 
} /* green */ 
.green { 
color: #e8f0de; 
border: solid 1px #538312; 
background: #64991e; 
background: -webkit-gradient(linear, left top, left bottom, from(#7db72f), to(#4e7d0e)); 
} 
</style> 
</head> 
<body style="background: #ededed;"> 
<div style="padding-top:40%;padding-left:20%"> 
帐号:<input type="text"><br/> 
密码:<input type="text"><br/> 
<div> 
<div style="padding-top:5%;padding-left:23%"><input type="button" class="button green" value="登录"></div> 
</body> 
</html>
Javascript 相关文章推荐
jQuery Ajax文件上传(php)
Jun 16 Javascript
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
Mar 28 Javascript
图片img的src不变让浏览器重新加载实现方法
Mar 29 Javascript
node.js不得不说的12点内容
Jul 14 Javascript
angularJS中router的使用指南
Feb 09 Javascript
JS实现1000以内被3或5整除的数字之和
Feb 18 Javascript
js验证真实姓名与身份证号,手机号的简单实例
Jul 18 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
Oct 28 Javascript
浅谈jQuery before和insertBefore的区别
Dec 04 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
May 20 jQuery
浅谈对于“不用setInterval,用setTimeout”的理解
Aug 28 Javascript
jQuery+ajax实现用户登录验证
Sep 13 jQuery
js 回车提交表单两种实现方法
Dec 31 #Javascript
event.currentTarget与event.target的区别介绍
Dec 31 #Javascript
jQuery $.data()方法使用注意细节
Dec 31 #Javascript
JavaScript 盒模型 尺寸深入理解
Dec 31 #Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
Dec 30 #Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
Dec 30 #Javascript
javascript中的缓动效果实现程序
Dec 29 #Javascript
You might like
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
解析JavaScript中的不可见数据类型
2013/12/02 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
jQuery实现统计输入文字个数的方法
2015/03/11 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
Vue加载组件、动态加载组件的几种方式
2018/08/31 Javascript
js实现一个简易计算器
2020/03/30 Javascript
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
Python使用minidom读写xml的方法
2015/06/03 Python
python设计模式大全
2016/06/27 Python
pygame实现烟雨蒙蒙下彩虹雨
2019/11/11 Python
Python实现bilibili时间长度查询的示例代码
2020/01/14 Python
python3中数组逆序输出方法
2020/12/01 Python
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
文明村创建实施方案
2014/03/27 职场文书
田径运动会开幕式及主持词
2014/03/28 职场文书
志愿者活动总结报告
2014/06/27 职场文书
三八活动策划方案
2014/08/17 职场文书
治庸问责心得体会
2014/09/12 职场文书
写给领导的感谢信
2015/01/22 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
行政复议决定书
2015/06/24 职场文书