通过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 相关文章推荐
快速查找数组中的某个元素并返回下标示例
Sep 03 Javascript
一张Web前端的思维导图分享
Jul 03 Javascript
javascript多物体运动实现方法分析
Jan 08 Javascript
基于JS实现省市联动效果代码分享
Jun 06 Javascript
Bootstrap源码解读网格系统(3)
Dec 22 Javascript
轻松实现jQuery添加删除按钮Click事件
Mar 13 Javascript
Angular获取手机验证码实现移动端登录注册功能
May 17 Javascript
关闭Vue计算属性自带的缓存功能方法
Mar 02 Javascript
vue兄弟组件传递数据的实例
Sep 06 Javascript
JS简单判断是否在微信浏览器打开的方法示例
Jan 08 Javascript
详解如何在Vue项目中发送jsonp请求
Oct 25 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
Feb 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
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
PHP取二进制文件头快速判断文件类型的实现代码
2013/08/05 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
2018/07/17 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
extjs之去除s.gif的影响
2010/12/25 Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
2010/12/30 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
打印json对象的内容及JSON.stringify函数应用
2013/03/29 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
js实现随机抽奖
2020/03/19 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
python pandas修改列属性的方法详解
2018/06/09 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
windows下python安装pip方法详解
2020/02/10 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
2020/05/19 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
学前教育专业毕业生自荐信
2013/10/03 职场文书
企业宣传方案
2014/03/04 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
七一建党节演讲稿
2014/09/11 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
离职证明范本
2015/06/12 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python