移动端 h5 开发相关内容总结——JavaScript 篇

1.改变页面标题的内容

有时候我们开发 h5页面的时候需要动态的去更新title 的名字,这个时候使用

    document.titile=‘修改后的名字‘;

就可以解决我们的问题。

或者使用

    //当前firefox对 title 参数不支持
    history.pushstate(state,title,url);

这种方法不仅能够修改 title 而且能够修改 url 的值,并且将这些信息存储到浏览器的历史堆栈中,当用户使用返回按钮的时候能够得到更加好的体验。

当我们在做一个无刷新更新页面数据的时候,可以使用这种方法来记录页面的状态,使得页面能够回退。

2.日志记录同步发送请求

有这样的一个场景:

在做电商类的产品的时候,我们要对每个产品的点击数进行统计(其实就是出发一个ajax请求)。PC端的交互大多数是点击商品后新开页面。这个时候ajax同步发送或者异步发送对统计没有影响。

但是嵌套在客户端中,长长是在当前 tab 中跳页。如果我们仍旧使用异步的ajax 请求,有请求会被阻断,统计结果不准确。

3.JavaScript 中 this 相关

这部分内容之前也是看过很多次,但是都不能够理解深层次的含义。后来看的多了,也就理解了。

var ab = {
    ‘a‘: 1,
    ‘b‘: 2,
    ‘c‘: 3,
    abc:function(){
        // 对象的方法中,this是绑定的当前对象
        var that=this;

        console.log(‘abc‘);
        var aaa=function(){
            //that指向的是当前对象
            console.log(that.a);
            //函数中this的值绑定的是全局的window对象
            console.log(this);
        };

        aaa();
    }
};
console.log(‘---------‘);
ab.abc();

以上代码浏览器中输出结果如下:

    var BBB=function(){
        var a=0;
        this.b=1;
        return this;
    }

    var bb= new BBB();

在浏览器中输入一下的内容查看输出:

我们对代码做一下修改,如下:

    var BBB=function(){
        var a=0;
        this.b=1;
    }

    var bb= new BBB();

与之上相同的输入,查看一下输出是什么

由上可知 new 操作符的执行过程:

  1. 一个新对象被创建。它继承自BBB.prototype
  2. 构造函数 BBB 被执行。执行的时候,相应的传参会被传入,同时上下文this会被指定为这个新实例。new BBB 等同于new BBB(), 只能用在不传递任何参数的情况。
  3. 如果构造函数返回了一个“对象”,那么这个对象会取代整个new出来的结果。如果构造函数没有返回对象,那么new出来的结果为步骤1创建的对象。

    一般情况下构造函数不返回任何值,不过用户如果想覆盖这个返回值,可以自己选择返回一个普通对象来覆盖。当然,返回数组也会覆盖,因为数组也是对象。

4.JavaScript 中闭包相关

定义在闭包中的函数可以“记忆”它创建时候的环境。

var test=function(string){
    return function(){
        console.log(string);
    }
};
var tt=test();
tt();
//li列表点击每一行 显示当前的行数
var add_li_event=function(node){
    var helper=function(i){
        return function(e){
            alert(i);
        }
    };

    for (var i = 0, len =node.length; i < len; i++) {
       node[i].onclick=helper(i);
    }
};

5.销毁事件绑定

我自己在写 js 的事件绑定的时候也经历了一个过程,刚开始的时候onclickbindlivedelegate,on 这样一个过程。

之所以会有这样的需求就是因为我们页面上的 DOM 是动态更新。比如说,某块内容是点击页面上的内容显示出来,然后在这块新出现的内容上使用click肯定是满足不了需求的。

livedelegate 属于较早版本的事件委托(代理事件)的写法。最新版本的 jquery 都是使用on 来做代理事件。效率上比 livedelegate更高。

live是将事件绑定到当前的document ,如果文档元素嵌套太深,在冒泡的过程中影响性能。

delegateon 的区别就是

    jQueryObject.delegate( selector , events [, data ], handler )
    //或者
    jQueryObject.delegate( selector, eventsMap )
    jQueryObject.on( events [, selector ] [, data ], handler )
    //或者
    jQueryObject.on( eventsMap [, selector ] [, data ] )

由此可知,使用on的话,子代元素的选择器是可选的。但是 delegate的选择器是必须的。ondelegate更加的灵活。

很多时候我们都是只声明事件绑定,而不管事件的销毁。但是在编写前端插件的时候,我们需要提供事件销毁的方法,提供给插件使用者调用。这样做的好处就是使,使用者对插件更加可控,释放内存,提供页面的性能。

    var that={};
    $(‘.event_dom‘).on(‘click‘,‘.childK_dom‘,function(){});
    $(window).on(‘scroll‘,scrollEvent);
    var scrollEvent=function(){};
    //事件销毁
    that.desrory=function(){
        $(‘.event_dom‘).off();
        //window 方法的销毁必须使用事件名称和回调函数,主要是 window 上可能绑定这系统自定义的事件和回掉
        $(window).off(‘scroll‘,scrollEvent);
    };


如果您觉得不错,请访问 github(点我) 地址给我一颗星。谢谢啦!

时间: 2024-10-08 05:39:46

移动端 h5 开发相关内容总结——JavaScript 篇的相关文章

移动端 h5开发相关内容总结——CSS篇

移动端 h5开发相关内容总结——CSS篇 标签: css移动 2016-01-06 15:59 5536人阅读 评论(3) 收藏 举报  分类: HTML+CSS(17)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1.移动端开发视窗口的添加 h5端开发下面这段话是必须配置的 <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=n

移动端h5开发相关内容总结css篇--自己总结

原文参考http://mp.weixin.qq.com/s/Nho2DHj-Y59j2F62vpN9jQ 1.开发移动端,头部必要的配置<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">(各属性值不在介绍,在开发中小米(2016年小米4)测试user-scalable=no是不起作用的)2.rem的使用设置根节点的font-size,开发

转---移动端 h5开发相关内容总结——CSS篇

作者:伯乐在线专栏作者 - zhiqiang21 如有好文章投稿,请点击 → 这里了解详情 如需转载,发送「转载」二字查看说明 1.移动端开发视窗口的添加 h5端开发下面这段话是必须配置的 meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> 其它相关配置内容如下: width viewport 宽度(数值/device-width) heig

移动端 h5开发相关内容总结(三)

之前写过两篇开发中遇到的问题和解决方案.当时是CSS 和 JavaScript 分开写的.现在写这篇文章的时候感觉很多内容都是有内在联系的,所以不好分开. 给大家分享一下这半年来的感受吧: 知道和理解之间是有很大距离的.别人谈到一个知识点,能接上嘴并且能发表一下自己的意见,这叫知道.遇到问题能够想到用什么知识点解决问题,这叫理解. 所以有很多知识点自己确实在书上都看到过但是在平时遇到问题的时候却不知道怎么去用或者说想到去用,有时候会有同事给一下指导说用什么解决问题.关键时候还是多看(看书,看别人

移动端H5开发 (滑动事件)

最近一直在做手机App H5的开发,在开发过程中,经常会遇到很多滑动事件,写个demo,分享自己的一些写法.(如写的不好,轻喷!) 直接贴代码 html css代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>touch demo</title> <style type="text/css"> #demo{

移动端H5开发入门

零.一些资料 1. http://www.w3school.com.cn/h.asp 2. http://www.imooc.com/learn/33     # 感觉这个还是有些难度的,可以看一些其他的视频资料."慕课网"  nice~ 一.前言 首先声明一下自己吧.对JS和CSS都属于.马马虎虎的那种.昨天才发现 原来页面中的JS可以这样写. (function ( window ) {     function aax( str ) {         alert(str);  

移动端H5开发问题记录

1. 当弹出键盘时,会改变页面高度,影响页面样式 通过window.onsize事件可以控制键盘弹出或消失的时候的样式 var h = document.body.scrollHeight // 用onresize事件监控窗口或框架被调整大小,先把一开始的高度记录下来 window.onresize = function () { // 如果当前窗口小于一开始记录的窗口高度,那就让当前窗口等于一开始窗口的高度 // alert("h:" + h + "; <br>

web移动端h5开发--ios的坑

一号坑:ios上点击事件失效问题? 解决方法: 1.将 click 事件直接绑定到目标?元素(??即 .target)上2.将目标?元素换成 <a> 或者 button 等可点击的?元素3.将 click 事件委托到?????非 document 或 body 的??父级元素上4.给?目标元素加一条样式规则 cursor: pointer; 原文地址:https://www.cnblogs.com/wangchengb/p/11434377.html

移动端H5页面高清多屏适配方案

背景 开发移动端H5页面 面对不同分辨率的手机 面对不同屏幕尺寸的手机 视觉稿 在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿. 对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范往往会遵循以下两点: 1)首先,选取一款手机的屏幕宽高作为基准(以前是iPhone4的320×480,现在更多的是iphone6的375×667). 2)对于retina屏幕(如: dpr=2),为了达到高清效果,视觉稿的画布大小会是基准的2倍,也就是说像素点个数是原来的4倍(对iphone6而言: