Web
文章平均质量分 93
孙群
关注前端HTML5,关注地理数据可视化,热爱移动互联网,爱开源,爱分享!
展开
-
HTTPS理论基础及其在Android中的最佳实践
我们知道,HTTP请求都是明文传输的,所谓的明文指的是没有经过加密的信息,如果HTTP请求被黑客拦截,并且里面含有银行卡密码等敏感数据的话,会非常危险。为了解决这个问题,Netscape 公司制定了HTTPS协议,HTTPS可以将数据加密传输,也就是传输的是密文,即便黑客在传输过程中拦截到数据也无法破译,这就保证了网络通信的安全。密码学基础在正式讲解HTTPS协议之前,我们首先要知道一些密码学的知识原创 2016-06-09 13:05:44 · 31279 阅读 · 37 评论 -
JavaScript中遍历对象属性方法详解
JavaScript中有多种方式遍历对象中的属性,本文中所说的对象都是普通的Object对象,不包括Array、Map、Set等实现了Iterator接口的对象。对象属性的遍历主要受几方面的影响: 能否遍历原型链上的属性、能否遍历不可枚举属性、能否遍历Symbol属性。遍历对象属性的方式包括: for...in、Object.keys()、Object.getOwnPropertyNames...原创 2020-03-22 17:18:33 · 6134 阅读 · 1 评论 -
自定义实现JavaScript中的Promise
目录浏览器兼容性自定义Promise实现参考Promise是JavaScript ES6规范中的一个重要对象,可以方便地实现各种异步操作。浏览器兼容性以下是各种浏览器对Promise的支持情况:对于不支持Promise的浏览器我们可以自定义Promise实现,将其作为原生Promise的Polyfill。自定义Promise实现以下是自定义实现的Promise:/** * 自定义...原创 2020-03-29 23:07:50 · 1270 阅读 · 0 评论 -
JavaScript中使用new操作符实例化对象时构造函数有返回值的情况分析
目录函数的两面性作为普通函数执行作为类的构造函数实例化对象作为类的构造函数使用时在不同返回值情况下的情况分析构造函数无返回值构造函数返有返回值,返回值是一个非null的对象构造函数有返回值,返回值不是对象或者返回值是null总结参考JavaScript中的函数具有两面性,既可以作为普通的函数进行执行,也可以作为类的构造函数实例化对象。函数的两面性作为普通函数执行当函数作为普通函数执行时...原创 2020-03-26 14:02:42 · 2129 阅读 · 0 评论 -
详解JavaScript对象中的getter和setter
目录getter和setter的作用添加伪属性的方式1. 通过`Object.prototype.__defineGetter__()` 和 `Object.prototype.__defineSetter__()`定义getter和setter2. 在新对象初始化时定义getter和setter3. 通过Object.defineProperty()和Object.definePropertie...原创 2020-03-16 14:29:33 · 3183 阅读 · 1 评论 -
Object.defineProperty()详解
目录为什么要使用Object.defineProperty()?方法签名方法描述属性描述符示例浏览器兼容性参考为什么要使用Object.defineProperty()?我们对一个Object对象设置属性时,一般是通过对象的.操作符或者[]操作符直接赋值的,例如obj1.a = 1 或 obj1['a'] = 1,通过这种方式添加的属性后续可以更改属性值,并且默认该属性是可枚举的,即通过for...原创 2020-03-16 00:12:56 · 5705 阅读 · 2 评论 -
WebGL+ArcGIS JS API实现Web城市地下管线三维场景浏览
注:转载请注明出处WebGL发展的如火如荼,未来的WebGIS也应该体现3D的趋势,本人的本科毕业论文是《Web城市地下管线三维场景浏览技术研究》,通过ArcGIS JS API获取地理数据,然后用WebGL框架Three.js将该地理数据进行三维展示。本论文主要具有以下创新点:(1)在传统的WebGIS的基础上,借助于主流的IT技术(WebGL)实现了在传统网页中嵌入三维GI原创 2012-06-29 17:31:45 · 40074 阅读 · 33 评论 -
正则表达式学习
1. 如果想同时使用多个修饰符可以这样写/reg/gi2. .(点号)匹配任何字符,除了换行和行结束符3. n?匹配零个或一个n的字符串,例如/http(s?)/可以匹配http或https4.n+匹配至少包含一个n的字符串5.n*匹配包含零个或多个n的字符串,例如可以用(.*)匹配连续任意字符串,例如/http:\/\/www.(.*).com/既可以匹配http://www.b原创 2014-03-30 17:20:28 · 2310 阅读 · 0 评论 -
仿微信打飞机小游戏GamePlane(1)----概述
去公司面试的时候,公司要求做一个Homework,实现类似于微信打飞机的游戏,原创 2014-09-13 23:49:56 · 4565 阅读 · 0 评论 -
getComputedStyle与currentStyle
本文参考https://developer.mozilla.org/en-US/docs/Web/API/Window.getComputedStyle1.简介 getComputedStyle是window下的一个全局函数,可以获取元素真正使用的样式。2.语法 var style = window.getComputedStyle(element[, ps原创 2013-12-15 20:00:40 · 3666 阅读 · 0 评论 -
使用node-inspector在线调试Node.js
现在许多IDE比如WebStorm、IDEA、Eclipse等都内置或通过插件集成可以对Node.js进行调试,但是如果我们没有使用这些IDE如何调试Node.js呢?node-inspector是一个在webkit浏览器中在线调试Node.js的第三方node包,提供了与前端调试一致的用户体验,使用过程如下:1.通过node install -g node-inspector以全局模式安原创 2013-11-12 00:50:44 · 7389 阅读 · 0 评论 -
让dojo.require异步加载小部件
注:本文的技术实现是基于非AMD方式的。最近用dojo开发了个系统,大约有40个widget,之前的做法是在首页里面一开始就通过dojo.require将这40多个小部件引入了,由于是在本机测试,所以一直没有速度问题,后来部署到外网后发现效率太慢了,最长的一次需要30多秒才能完成页面初始化。虽然我一开始引入了40多个widget,但是我并不是一上来就new这么多个小部件,一开始我只用到了三四个原创 2013-07-27 12:18:05 · 3617 阅读 · 0 评论 -
JavaScript原型链以及ES3、ES5、ES6实现继承的不同方式
本文首发于GitHub,《JavaScript原型链以及ES3、ES5、ES6实现继承的不同方式》,欢迎关注我的GitHub。原型执行代码var o = new Object();,此时o对象内部会存储一个指针,这个指针指向了Object.prototype,当执行o.toString()等方法(或访问其他属性)时,o会首先查看自身有没有该方法或属性,如果没有的话就沿着内部存储的指针找到Object原创 2017-03-15 12:33:50 · 7983 阅读 · 5 评论 -
自己构建Ajax请求进行模拟QueryTask进行查询
ArcGIS JS API中用Query和QueryTask进行查询的时候其实是进行的Ajax请求,只不过是将该Ajax请求进行了封装,更好的方便二次开发人员调用而已。有时候我们用QueryTask进行查询的时候,传的参数的数据可能比较大,比如query.geometry经过序列化后超过了2KB,那么就需要执行post请求,这样就会造成ajax的跨域访问问题。一般的解决办法是使用ArcGIS所提供原创 2012-12-14 22:39:40 · 3527 阅读 · 0 评论 -
Dojo小部件生命周期探究
理解dojo小部件对于开发dojo的widget至关重要,dojo在绘制过程中主要存在以下几个过程:constructor->postMixInProperties->buildRendering/templateString/templatePath->postCreate->startup,为了探究各个过程,做了一个简单的widget,并且该widget包含子小部件。以下是子小部件的模原创 2012-09-30 12:00:07 · 3943 阅读 · 1 评论 -
正确解析Dojo的子小部件
在创建自定义的dojo小部件的时候经常要使用模板文件,如果我们创建的小部件中内还有子小部件,那么我就需要在自定义的widget的模板文件中声明式的添加子小部件。下面我创建一个自定义的包含自小部件的widget。创建的小部件比较简单,以下是小部件的模板文件: 按钮控件 以下是小部件的js代码:dojo.provide("iSpring.wi原创 2012-09-30 10:57:59 · 4328 阅读 · 2 评论 -
Dojo中创建widget方式小结
dojo中创建widget的方式总的来说有两种:声明式创建widget、编程式创建widget。编程式创建widget根据srcNode又可分为三种:静态srcNode、动态srcNode、无srcNode。 1. 声明式创建widget,通过在宿主节点上设置dojoType="widgetName"来实现,代码如下所示: 声明式的widget @import "http://原创 2012-05-10 19:05:49 · 3621 阅读 · 0 评论 -
[GitHub开源]基于HTML5实现的轻量级Google Earth三维地图引擎,带你畅游世界
A WebGL virtual globe and map engineWebGlobe WebGlobe是基于HTML5原生WebGL实现的轻量级Google Earth三维地图引擎。GitHub:https://github.com/iSpring/WebGlobeDemo: https://ispring.github.io/WebGlobe/index.html如果觉得不原创 2016-09-27 12:49:11 · 34942 阅读 · 11 评论 -
HTML5原生WebGL开发系列教程
1. OpenGL中的坐标变换、矩阵变换2. OpenGL ES 2.0编程基础3. 原生WebGL简单Demo4. 在WebGL中使用drawElements绘图5. WebGL不同几何图形的渲染方式6. 使用自定义glTranslate与glRotate7. 原生WebGL+ArcGIS JS API绘制旋转的地球8. WebGL矩阵、Camera基础操作9. WebGL使用一张贴图纹理绘制地球原创 2017-05-02 12:20:56 · 11310 阅读 · 1 评论 -
node不是内部或外部命令
初学Node.js,从官网下载了Node.js的Windows Installer,安装完成后,通过控制台输入node命令,发现提示说“node"不是内部或外部命令,这通常是由于没有设置环境变量导致的。Node.js在安装过程中不允许用户选择安装路径,默认安装到了C:\Program Files\nodejs路径下,按说Node.js在安装完成后都会默认设置环境变量,我打开用户环境变量查看了下Pa原创 2012-09-27 05:57:13 · 43811 阅读 · 6 评论 -
Element属性方法的浏览器兼容性概览
参考自https://developer.mozilla.org/en-US/docs/Web/API/Element原创 2013-12-17 09:39:42 · 8040 阅读 · 0 评论 -
WebGL自学课程(2):使用自定义glTranslate与glRotate
OpenGL中可以直接使用glTranslate与glRotate,但是WebGL1.0规范中并没有包含该函数,如果想使用,需要自己进行实现。以下是示例代码: World html,body,div{margin:0;padding:0} at原创 2012-06-26 23:08:54 · 3845 阅读 · 0 评论 -
WebGL自学课程(4):WebGL矩阵、Camera基础操作
直接使用WebGL进行开发比较困难,所以用WebGL进行三维开发一般都要使用框架,本人也在学习WebGL,所以想构建一个自己习惯的框架,正好加深自己对WebGL技术的理解。WebGL框架中最重要的部分应该是矩阵变换以及Camera操作,所以本人首先构建矩阵和摄像机方面的基础代码。本人的代码还比较基础,谈不上框架,只是为了是自己加深理解而已。代码如下:isZero = function(valu原创 2012-07-08 14:16:33 · 4770 阅读 · 0 评论 -
用Three.js根据两个三维点创建Cylinder
Three.js中默认不能直接根据两个三维点的坐标创建Cylinder,创建的Cylinder默认是垂直于XOY平面的,不便于实际应用,下面是用Three.js根据两个三维点创建Cylinder:function createCylinderMesh(x1,y1,z1,x2,y2,z2){ var x0 = (x1 + x2) / 2; var y0 = (y1 +原创 2012-05-15 10:41:34 · 4453 阅读 · 2 评论 -
通过script标签实现JSONP跨域调用
为了演示通过script标签实现JSONP跨域调用,在VS的解决方案中有两个不同域的网站,客户端网站MyClientJSONP的域是localhost://24114,处理JSONP请求的服务器网站MyServerJSONP的域是localhost://24115,本示例就是为了演示从MyClientJSONP跨域调用MyServerJSONP,解决方案如下图所示:客户端Cli原创 2012-04-05 12:46:45 · 4160 阅读 · 0 评论 -
ASP.NET中的回调技术
ASP.NET中的回调技术其实也是通过XMLHttpRequest来实现的,只不过微软做了进一步的封装,让我们在使用的过程中没有看到。 用户注册 //客户端执行的方法 //回调成功执行的回调函数,下面的方法是接收并处理服务器方法执行的返回结果 function Success(res原创 2012-02-27 12:18:24 · 2350 阅读 · 2 评论 -
WebGL自学课程(1):原生WebGL简单Demo
以下是一个原生WebGL简单Demo: World html,body,div{margin:0;padding:0} attribute vec3 aPosition; uniform mat4 uModelView原创 2012-06-26 17:35:19 · 8119 阅读 · 0 评论 -
WebGL自学课程(7):WebGL加载跨域纹理出错Cross-origin image load denied by Cross-Origin Resource Sharing policy.
最近在学习WebGL,用图片对WebGL进行纹理贴图,其中图片是从其他网站跨域获取的,用Chrome 22运行网页,开始的时候出现了错误Uncaught Error: SECURITY_ERR: DOM Exception 18,找到了解决方案,参见本人另一篇博文Uncaught Error: SECURITY_ERR: DOM Exception 18。本人最近又从其他网站跨域获原创 2012-08-09 17:53:19 · 12858 阅读 · 1 评论 -
document.documentElement
参考 https://developer.mozilla.org/zh-CN/docs/Web/API/document.documentElement http://www.w3schools.com/jsref/prop_document_documentelement.asp该属性为只读属性,返回的元素是document的根元素(例如:HTML文档的根元素原创 2013-12-16 23:10:13 · 2185 阅读 · 0 评论 -
document.devaultView
在浏览器中,该属性返回当前 document 对象所关联的 window 对象,如果没有,会返回 null。该属性为只读,IE 9 以下版本不支持 defaultView。原创 2013-12-15 19:21:47 · 1946 阅读 · 0 评论 -
Ajax通过SOAP协议调用Web服务
前段时间做了一个用Ajax调用Web服务的Demo,在此记录一下。调用的是一个地理编码服务,该服务可以将地址转换为地理坐标,如下所示:点击该服务可以看到该服务SOAP形式的请求与返回结果形式,如下图所示:我们用Ajax通过SOAP协议调用Web服务,其实就是要构建SOAP形式的请求的xml,如上图所示,请求的xml格式一定要与上面给出的SOAP1.1 request保持一致原创 2013-07-21 15:14:59 · 5447 阅读 · 0 评论 -
WebGL自学课程(5):使用一张贴图纹理绘制地球
注:转载请注明出处在《WebGL自学课程(3):原生WebGL+ArcGIS JS API绘制旋转地球》一文中讲述了如何利用地图数据绘制地球的轮廓,但是缺少色彩。本文就是想通过贴图的方式让地球穿上一层靓丽的外衣,并可以通过鼠标拖拽等对绘制的地球进行交互式操作。由于本人《WebGL自学课程(4):WebGL矩阵、Camera基础操作》一文中构建了本人自己常用的代码,封装到World.js原创 2012-07-14 20:21:40 · 7310 阅读 · 0 评论 -
使用debugger在dojo小部件中调试代码
以前调试js代码的时候都是在Chrome的Developer Tools的Source中找到要调试的js文件,然后进去后设置好断点,然后调试,有时候设置好断点后要重新刷新才能进入断点,虽然麻烦,但是最起码还能调试代码。后来我在使用dojo进行widget开发的时候,发现这种调试代码的方式不管用了,有的时候是压根就在Sourece中找不到相应的小部件的widget,有的时候是设置了断点根本不起效果,原创 2012-09-26 22:18:40 · 2421 阅读 · 0 评论 -
利用input type=file和FileReader API实现在浏览器客户端通过选择对话框读取文件
如题,利用input type=file和FileReader API实现在浏览器客户端通过选择对话框读取文件,代码如下,以读取文本文件为例: File Selection HTML5 File Selection Example 1 var message = []; if (!document.g原创 2012-09-26 17:09:05 · 3682 阅读 · 0 评论 -
WebGL自学课程(6):WebGL加载跨域纹理出错Uncaught Error: SECURITY_ERR: DOM Exception 18
最近在学习WebGL,用图片对WebGL进行纹理贴图,其中图片是从其他网站跨域获取的,image.src = "http://otile1.mqcdn.com/tiles/1.0.0/osm/"+level+"/"+column+"/"+row+".jpg";用Chrome 22运行网页,每次在执行到gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGB原创 2012-07-18 13:58:25 · 8265 阅读 · 2 评论 -
HTML服务器控件与ASP.NET服务器控件的区别
在ASP.NET开发中用到的控件可以分为三种:传统html控件(比如)、html服务器控件(比如)以及ASP.NET服务器控件(比如)。初学ASP.NET,第一种控件相当于在客户端运行,在服务器端无法用代码捕获它;后面两种控件都是在服务器端运行,他们都需要设置id,我们可以在服务器端用id来自动捕获它们,html服务器控件对应着System.Web.UI.HtmlControls.HtmlIn原创 2012-02-26 10:49:16 · 4130 阅读 · 2 评论