通过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 相关文章推荐
用于判断用户注册时,密码强度的JS代码
Jan 01 Javascript
JQuery中SetTimeOut传参问题探讨
May 10 Javascript
模拟一个类似百度google的模糊搜索下拉列表
Apr 15 Javascript
jquery attr方法获取input的checked属性问题
May 26 Javascript
jquery中map函数与each函数的区别实例介绍
Jun 23 Javascript
详解Javascript中prototype属性(推荐)
Sep 03 Javascript
JS按钮闪烁功能的实现代码
Jul 21 Javascript
微信小程序商品详情页规格属性选择示例代码
Oct 30 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
Feb 01 Javascript
vue 项目地址去掉 #的方法
Oct 20 Javascript
javascript实现遮罩层动态效果实例
May 14 Javascript
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
Mar 17 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
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
js Calender控件使用详解
2015/01/05 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
[01:34]2016国际邀请赛中国区预选赛IG战队教练采访
2016/06/27 DOTA
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
Python3的介绍、安装和命令行的认识(推荐)
2018/10/20 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
东方电视购物:东方CJ
2016/10/12 全球购物
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
统计学教授推荐信
2014/09/18 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
学生打架检讨书
2014/10/20 职场文书
幼儿园大班见习报告
2014/10/31 职场文书
政风行风整改报告
2014/11/06 职场文书
商务代表岗位职责
2015/02/15 职场文书
vue打包时去掉所有的console.log
2022/04/10 Vue.js