javascript(简称js)语言在移动前端可以说必不可少,许多效果都是和js相关的,包括现在移动端的一些框架:jqmobi、jqtouch、sencha touch、jquerymobile等等。都是基于js编写的。

暂时不讨论这些框架,主要讨论一下部分常用的js事件在移动端的使用。举几个例子:

1、隐藏地址导航栏:

<script>
// 该函数由Simon Willison编写,它只有一个参数,该参数表示被调用的函数名(在页面加载完毕时执行的函数的名字)
function addLoadEvent(func) {
var oldOnload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
}
else {
window.onload = function() {
oldOnload();
func();
}
}
}
// 添加Load事件处理
addLoadEvent(hideMenu);
function hideMenu() {
setTimeout("window.scrollTo(0, 0)", 1);
}
</script>

以上代码是针对IOS系统的移动端收缩地址导航栏作用的(部分安卓机也可以)。核心代码就一句:setTimeout("window.scrollTo(0, 0)", 1); 利用定时器,将窗口移动到内容端的最上端,从而隐掉地址导航栏。

2、判断手机横竖屏状态:

<script>
function hengshuping(){
if(window.orientation==180||window.orientation==0){
alert("竖屏状态!")
}
if(window.orientation==90||window.orientation==-90){
alert("横屏状态!")
}
}
window.addEventListener("onorientationchange" in window ? "orientationchange" : "resize", hengshuping, false);
</script>

移动端的浏览器一般都支持window.orientation这个参数,通过这个参数可以判断出手机是处在横屏还是竖屏状态,从而根据实际需求而执行相应的程序,通过添加监听事件onorientationchange,进行执行就可以了。

3、判断是否是从主屏幕图标进入的网站:

<script>
if ('standalone' in navigator && !navigator.standalone && (/iphone|ipod|ipad/gi).test(navigator.platform) && (/Safari/i).test(navigator.appVersion) && window.orientation==90||window.orientation==-90) {
document.write('<link rel="stylesheet" href="css/add2home.css">');
document.write('<script type="application\/javascript" src="js/add2home.js" charset="utf-8"><\/s' + 'cript>');
}
</script>

通过判断navigator.standalone来确定是否是从主屏幕图标来进入网站的。这个主要是应用在webapp端还是web端进入网站的,从而进行相应的操作。

本例是navigator.standalone等于false即是从浏览器(web端)进入的网站的。那么在document文档中写入两段代码。

4、取消浏览器默认行为:

var preventDefaultScroll = function(event) {
event.preventDefault();
window.scroll(0,0);
return false;
}; document.addEventListener('touchmove', preventDefaultScroll, false);

取消浏览器默认行为,主要是为了控制一些手势事件,让它们按照具体的需求来进行相应的操作。核心代码是event.preventDefault();

当手指滑动(touchmove)时进行触发,关于手指事件,下次进行详细讨论。

5、手机加速度事件:

<script>
var page=1;
var xx=0;
var jishu=0; function deviceMotionHandler(eventData) {
var acceleration = eventData.accelerationIncludingGravity;
var zhuanhouX=Math.round(acceleration.x);
if(xx-zhuanhouX>3||xx-zhuanhouX<-3){
xx=zhuanhouX;
jishu++; }
if(jishu>10){ var imgshu=$("#yidongDiv").find("img").length; var yidongJuli=$("#rongqi").width(); if(!$("#yidongDiv").is(":animated")){ if(page==imgshu){
$("#yidongDiv").animate({left:'0px'},500)
page=1;
$("#changwenzi").attr("src","images/wenzi1.png")
}
else{
$("#yidongDiv").animate({left:'-='+yidongJuli},500)
$("#changwenzi").attr("src","images/wenzi"+(page+1)+".png")
page++;
} } jishu=0;
xx=0; };
}
window.addEventListener('devicemotion', deviceMotionHandler, false);
</script>

例子中是通过获取手机加速度,来进行一个动画的实例。

在IOS5以上版本已经可以支持devicemotion事件。android4.0也开始支持这个事件。

eventData.accelerationIncludingGravity这个属性获取到的是一组数值,它包括X\Y\Z轴的一个数组。通过对var zhuanhouX=Math.round(acceleration.x); X值的正负进行判断手机是否处于水平左右摇晃状态,从而引发动画。

这里就介绍5例常用的,以后慢慢添加其他js方法在移动端的应用。。。

移动端——JS(一)的更多相关文章

  1. 高性能双端js模板

    高性能双端js模板(新增filter)---simplite simplite是一款js实现的模板引擎,它能够完成浏览器端js模版和node服务器端js模板的数据渲染. 渲染性能十分突出. 支持浏览器 ...

  2. 高性能双端js模板---simplite

    simplite是一款js实现的模板引擎,它能够完成浏览器端js模版和node服务器端js模板的数据渲染,渲染性能达到引擎的极限. 渲染性能十分突出. 支持浏览器端和node服务器端模板渲染. 它简单 ...

  3. 浏览器端JS导出EXCEL

    浏览器端JS导出EXCEL FileSaver.js 实现了在本身不支持 HTML5 W3C saveAs() FileSaver 接口的浏览器支持文件保存.FileSaver.js 在客户端保存文件 ...

  4. 🤔 移动端 JS 引擎哪家强?美国硅谷找......

    如果你喜欢我写的文章,可以把我的公众号设为星标 ,这样每次有更新就可以及时推送给你啦 在一般的移动端开发场景中,每次更新应用功能都是通过 Native 语言开发并通过应用市场版本分发来实现的.但是市场 ...

  5. 移动端-js触摸事件

    开发者工具 在移动开发中,一种较为容易的做法是,先在桌面上开始原型设计,然后再在打算要支持的设备上处理移动特有的部分.多点触摸正是难以在PC上进行测试的那些功能之一,因为大部分的PC都没有触摸输入. ...

  6. 移动端 js touch事件

    随着智能手机和平板电脑的普及, 越来越多的人用移动设备浏览网页,我们平时在pc浏览器上用的鼠标事件,比如:click, mouseover等, 已经无法满足移动设备触摸屏的特点,触摸时代的到来,离不开 ...

  7. 移动端js插件分享

    分享几个移动端使用的插件,个人感觉挺不错的. 1. TouchSlide1.1 滑动的焦点图  http://pan.baidu.com/s/1i3J6bbB 2. iscroll.js  模拟滚动条 ...

  8. 移动端JS事件、移动端框架

    一.移动端的操作方式和PC端是不同的,移动端主要是用手指操作,所以有特殊的touch事件,touch事件包括如下几个事件: 1.手指放到屏幕上时触发   touchstart 2.手指放在屏幕上滑动式 ...

  9. 移动端js调试工具:eruda

    通常写前端页面都在Chrome浏览器的开发模式下进行调试,但是写放在移动端的H5页面时,有时候会遇到在Chrome上调试没有问题,但是在手机的浏览器上有问题的情况:或者有些功能只能在特定的容器中才能其 ...

  10. JAVA web端JS下载excel文件

    JSP代码如下: JSP端引入jquery.easyui.min.js库: <script type="text/javascript" src="<c:ur ...

随机推荐

  1. C++ STL 之 stack

    stack 是一种先进后出(first in last out,FILO)的数据结构,它只有一个出口,stack 只允许在栈顶新增元素,移除元素,获得顶端元素,但是除了顶端之外,其他地方不允许存取 元 ...

  2. 【pycharm】pycharm断点调试

    step into:单步执行,遇到子函数就进入并且继续单步执行(简而言之,进入子函数): step over:在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止, ...

  3. set 集合的函数调用

    方法 意义 S.add(e) 在集合中添加一个新的元素e:如果元素已经存在,则不添加 S.remove(e) 从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误 S.dis ...

  4. 【leetcode】617. Merge Two Binary Trees

    原题 Given two binary trees and imagine that when you put one of them to cover the other, some nodes o ...

  5. 【Day4】1.JsonPath使用案例

    import json python_data = [ { 'username': 'normal', 'vip': True, }, { 'username':None, 'vip':False } ...

  6. Delphi 从一个对象中继承数据和方法

  7. linux中公钥和私钥的区别以及关系

    导读 在学习ssh章节时,一定有不少人对公钥和私钥产生过不解.在搜索公钥跟私钥的理解时,发现了这篇有趣的图解小文章,与大家共享. 1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥. 2. 鲍勃把公钥送给 ...

  8. 01 js数据类型

    1.不管什么语言,上来就应该是数据类型了.js也不例外.那么基本的数据类型我们有,boolean, number, string, null, undefine, symbol, object, fu ...

  9. Tensorflow目录

    0.Tensorflow安装 1.创建会话,启动会话 2.变量 3.Fech_feed 4.线性回归 5.非线性回归 6.MNIST数据集简单分类 7.交叉熵 8.Dropout 9.正则化 10.优 ...

  10. withdraw搭建

    <!-- yuan -->首先得安装rabbitmq(由于运行过程中报错)1.安装rabbitmq服务软件包 : apt install rabbitmq-server2.安装完成后在ra ...