通过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 相关文章推荐
javascript下判断一个对象是否具有指定名称的属性的的代码
Jan 11 Javascript
JavaScript利用构造函数和原型的方式模拟C#类的功能
Mar 06 Javascript
javascript实现全局匹配并替换的方法
Apr 27 Javascript
jquery实现简易的移动端验证表单
Nov 08 Javascript
Vue.js每天必学之组件与组件间的通信
Sep 08 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
Nov 17 Javascript
浅谈React 属性和状态的一些总结
Nov 21 Javascript
判断颜色是否合法的正则表达式(详解)
May 03 Javascript
总结js函数相关知识点
Feb 27 Javascript
解决vue项目使用font-awesome,build后路径的问题
Sep 01 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
Oct 18 Javascript
layui使用及简单的三级联动实现教程
Dec 01 Javascript
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
Codeigniter注册登录代码示例
2014/06/12 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
2016/05/22 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
详解Laravel视图间共享数据与视图Composer
2016/08/04 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
window.open不被拦截的实现代码
2012/08/22 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
Javascript 引擎工作机制详解
2016/11/30 Javascript
微信小程序开发之Tabbar实例详解
2017/01/09 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
JointJS JavaScript流程图绘制框架解析
2019/08/15 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
Python创建普通菜单示例【基于win32ui模块】
2018/05/09 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
PyQt5固定窗口大小的方法
2019/06/18 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
巴黎一票通:The Paris Pass
2018/02/10 全球购物
医院我们的节日活动实施方案
2014/08/22 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
新闻人物通讯稿
2014/10/09 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
新员工试用期自我评价
2015/03/10 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
立春观后感
2015/06/18 职场文书
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS
python图片灰度化处理的几种方法
2021/06/23 Python
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL