分类‘编程代码’

移动端使用FormData实现异步上传

FormData是什么呢?FormData是XMLHttpRequest Level 2添加的一个新的接口,利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,还可以使用XMLHttpRequest的send()方法来异步的提交这个"表单"。比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件。

所有主流浏览器的较新版本都已经支持这个对象了,比如Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+。为什么标题说移动端呢?很明显,国内很多网站什么的还在兼容IE8甚至IE7,所以,这个方案在PC端并不是那么好用。早在两年前就有同事不计后果的用上了这个,后来测试发现在IE8下报错才跑来问我,我看了下同事写的代码才发现是个无解的问题,于是同事就开始改造回传统上传模式了。

回归主题,移动端就不同了,目前手机飞速得更新换代,外加上主流手机系统基本都是webkit内核,用上FormData可以说是基本没什么后苦之忧了。那么纠结该怎么用呢? 查看更多...

简易NodeJS、PHP跨域代理[Restful请求]

最近测试一些东西,需要跨域访问Restful接口,因为是测试,不可能改变接口形式,所以jsonp方案直接Pass。

本地测试时简单写了几行NodeJS代码,对特定路径下的请求进行转发后回传,因为使用WebStorm开发,NodeJS不可以和WebStorm内置服务器使用相同端口,虽然可以通过配置本地服务器,完全将NodeJS作为服务器,但那样需要解决静态资源的输出,写东西过多,偏离初衷,这里不再赘述。

不过如果你是做前后端完全分离的项目,大可以找个开源的Web框架来用,比如express等,这里不多介绍。

总之但思路就这样了,可能不太完善,代码如下: 查看更多...

Java方法究竟是值传递还是引用传递?

一直以来,Java地址引用概念的影响,认为Java传参分为值传递和引用传递,最近因为追究JavaScript的传递方式,遂翻出Java相关资料看了一下,发现原来这么久一直理解错了。Java中只有按值传递,没有按引用传递!

这里同样涉及到堆与栈的概念,至于区别,这里就不再赘述了,和JavaScript的说法类似,可以参考前面的《JavaScript函数究竟是值传递还是引用传递?》。

对于这个问题,网上说法各异,《Core Java》的作者,以及JAVA的创造者James Gosling都认为当一个对象或引用类型变量被当作参数传递时,也是值传递,这个值就是对象的引用,因此JAVA中只有值传递,没有引用传递。还有一种说法是引用可以看作是对象的别名,当对象被当作参数传递时,传递的是对象的引用,因此是引用传递。当然,也有《Thinking in Java》作者Bruce Eckel站在了中立的立场上。 查看更多...

JavaScript函数究竟是值传递还是引用传递?

很多人认为 JavaScript中函数进行参数传递有两种方式:基础类型值传递;对象类型按引用传递。很长一段时间我也这样认为,其实都是一种值传递。

事情是在近期QQ群里偶尔聊到,JavaScript函数传值到底是值传递还是引用传递,看到有人说都是值,原因即使是对象也是传了对象的拷贝,即对象的值本身。本着对技术的刨根问底儿的精神,查了相关资料,得到结论:ECMAScript中所有函数的参数都是按值来传递的

下面是一些相关概念的解释,整理自网络:

众所周知,在JavaScript中数据类型可以分为两类:

原始数据类型值 primitive type,比如Undefined,Null,Boolean,Number,String。

引用类型值,也就是对象类型 Object type,比如Object,Array,Function,Date等。 查看更多...

Jersey2 模拟登陆网站及登陆后301重定向识别

周末群里有人希望帮他搞个程序采集某个网站数据,虽然说没什么技术难点又不缺那点钱,但是好奇心还是比较重,没事看了看,最基本的基于SESSION的认证,POST个用户名密码即可,用java写的话我通常采用HttpClient,很强大,很通用,但是最近时不时有看过Jersey2的一些东西,貌似和我之前熟知的1.x差异挺大,就刚好拿来试试(不是接单帮搞数据,单纯的玩技术,采集别人数据的事我可不做)。

实践下来,发现Jersey2的API写起来更清爽了,因为是用来采集,这里只用了Jersey-client相关功能,期间遇到一些小问题,就是登陆成功后目标网站是301重定向到新页面的,而Jersey2的API调用后还保留在原始页面,最终导致SESSION无效,不能进行下一步操作,Stackoverflow上搜了下,最终解决了,很简单,如下 查看更多...

简洁Metro风格jQuery下拉框插件分享

日常工作中经常需要对form表单元素进行美化,而常用元素中唯独select下拉框最不易通过CSS重写样式,所以选择使用自定义的样式加列表模拟原生select。

此类插件网上也是很多,但很多插件功能是大而全的,而我需要的只不过是简简单单的风格样式上的统一,于是,自己草草写下了一款小插件,优点是可以通过以下三种方式生成:

1、在某个div上示例化组件,通过传入数组生成
2、通过固定格式的dl dd自定义列表生成
3、通过原生select生成,同时,如果你不愿意改动事件绑定代码来完成联动,可以保持原有程序不变,取值也依然是不变的。
查看更多...

初识Kotlin

Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。作为目前广受欢迎的 Java IDE IntelliJ 的提供商,在 Apache 许可下已经开源其Kotlin 编程语言。

Kotlin设计目标是

1、创建一种兼容Java的语言

2、让它比Java更安全,能够静态检测常见的陷阱。如:引用空指针

3、让它比Java更简洁,通过支持variable type inference,higher-order functions (closures),extension functions,mixins and first-class delegation等实现。

4、让它比最成熟的竞争对手Scala语言更加简单。 查看更多...

网页局部滚动时屏蔽全局滚动事件(屏蔽鼠标滚轮事件)

标题有些绕,其实就是很简单的问题,很多人应该都遇到过,最近优化自动完成的插件,发现在下拉框内容多时出现滚动条的情况下,如果页面本身也有滚动条,就很容易出现两边都滚动的情况,体验非常之差。因为之前没有考虑过此类问题,自信想了下,应该可以通过技术手段避免。

一开始想过监听scroll事件,但是发现这样的想法本身就有误区,因为滚动某个元素本身,而要去屏蔽window的滚动,根本说不通,那么换一种思路,既然滚动通常是鼠标操作,何不操作处理滚轮事件?

简单查了下,的确有类似的文章,我们都知道,jQuery插件默认是不支持鼠标中轮滚轮事件的,现在我们可以用于添加跨浏览器的鼠标滚轮支持可以使用jQuery的Mousewheel插件,具体插件大家可以搜jquery.mousewheel.js找到,这里不再额外贴地址。 查看更多...

结合HTML5、CSS3、JS模拟微信摇一摇开发小记

客户想要通过网页实现一个类似微信摇一摇的小游戏,周末在家没事,就做了下,摇一摇之前有做,但是效果不是类似微信那样的,所以照搬旧实现方案,采用github上人气略高的一个Device Accelerometer封装函数,这样就不用自己去爬各种坑了。

摇动事件是解决了,但想模拟声音、震动之类的,还得找一下新的api,因为之前没用过,所以大概收集了下资料,下面简单记录一下。

摇动就不再赘述了,简单几步,可以参考这里https://github.com/alexgibson/shake.js
查看更多...

JS获取鼠标点击坐标五种方式及兼容性

关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种

event.clientX/Y
event.pageX/Y
event.offsetX/Y
event.layerX/Y
event.screenX/Y

clientX/Y:

clientX/Y获取到的是触发点相对浏览器可视区域左上角距离,不随页面滚动而改变

兼容性:所有浏览器均支持 查看更多...