10

JavaScript中的call、apply、bind方法的异同

js中的call(), apply()和bind()是Function.prototype下的方法,都是用于改变函数运行时上下文,最终的返回值是你调用的方法的返回值,若该方法没有返回值,则返回undefined。这几个方法很好地体现了js函数式语言特性,在js中几乎每一次编写函数式语言风格的代码,都离不开call和apply,能够熟练运用它们,是真正成为一名jser程序员的重要一步。 Continue reading

04

关于开发Google+以及Facebook第三方登录

简述

最近项目中有关于第三方授权登陆的需求,第三方Facebook以及Google +登录。

正好这几天把这个需求做得差不多了,收个尾,作为一个这方面之前基本从未涉及的小白,总结下开发流程以及过程中遇到的一些问题。希望能对大家有所帮助。

基本上,目前互联网上的涉及到第三方登录采用的都为OAuth认证方式,相关原理以及实现方法相关的可以网上搜索查看。不过涉及到Facebook以及Google +的登陆,最大的问题是这两个网站在墙外,想FQ找资料比较费劲,奈何国内这方面的资料也不是很齐全,翻到的官方的文档又全是英文的,阅读无能~

第三方登陆简单可以分为以下几个步骤,分别是:获得第三方登陆许可认证根据规范添加页面登录样式和js实现,跳转到第三方登陆页面登陆并获取授权后,返回原指定页面(或请求)后台对登录信息进行校验,并获取对应第三方登陆用户的信息将第三方用户信息与本系统用户进行关联

下面就以上几个步骤的一些关键信息,或者说是我开发当中遇到的问题做一下简要的记录。因为Facebook以及Google +第三方登陆都采用的是Auth2技术,因此只会在具体实现不同的地方单独说明。理解有误的地方,或者是没有说全的地方,还请各位谅解~ Continue reading

15

原生JS复制文本到手机剪切板

复制文本到剪切板,兼容PC与WAP,复制文本到手机剪切板,兼容电脑与手机移动设备

方法一:

方法二:

 

十二 11

使用iframe给页面的localStorage扩容

浏览器提供的localStorage本地存储的最大空间是5M,如果不够用呢,这时候就需要考虑来给localStorage扩容。

思路如下:

  1. 在【A域】下引入【B域】,【A域】空间足够时,读写由【A域】来完成,数据存在【A域】下;当【A域】空间不够时,读写由【B域】来完成,数据存在【B域】下
  2. 【A域】空间不够需要在【B域】读写时,通过postMessage 向【B域】发送跨域消息,【B域】监听跨域消息,在接到指定的消息时进行读写操作
  3. 【B域】接到跨域消息时,如果是写入删除可以不做什么,如果是读取,就要先读取本域本地数据通过postMessage向父页面发送消息
  4. 【A域】在读取【B域】数据时就需要监听来自【B域】的跨域消息 Continue reading
十二 11

js中子框架和父框架的通信iframe

iframe父子框架通信

1.获取父框架的内容

window.parent.name;//name为你要获取的值的名称

parent.document.getElementById(“id”); //根据id获取父框架对象

parent.document.getElementByTagName(“name”); //根据name获取父框架对象

2.获取子框架的内容

document.getElementById(“id”).contentWindow.document.getElementById(“childId”);

根据子窗口Id获取子框架内容,根据子框架的childId,获取框架对象。

document.getElementById(“id”).contentWindow可以获得子窗口的window对象 Continue reading

十二 04

原生js封装ajax:传json,str,excel文件上传表单提交

封装ajax,ajax封装,原生js

由于项目中需要在提交ajax前设置header信息,jquery的ajax实现不了,我们自己封装几个常用的ajax方法。

jQuery的ajax普通封装

原生ajax封装,设置header,传json Continue reading