摘要:要获取 TextArea 中光标所选择的范围及其内容,对于大部分浏览器来说非常简单:只需要读取 selectionStart 和 selectionEnd 属性就完成了。但是 IE6 - IE8 的 textarea 元素没有这两个属性,所以我们需要改用 IE 中独有的 TextRange 对象。例子如下:function getSelection(area) { var selstart, selend, seltext; if (area.selectionStart) { selstart = area.selectionStart; selend = area.sel...
阅读全文
06 2012 档案
摘要:在 JavaScript 中,我们可以用XMLHttpRequest 对象在后台和服务器交换数据。XMLHttpRequest 是 AJAX 的基础之一。但是由于 JavaScript 的同源策略的限制,在网页和第三方网站交互时,无法这样使用。在许多网站纷纷开放 API 的今天,这个限制真是让人恼火。还好,W3C 已经提出了跨源资源共享(Cross-Origin Resource Sharing)协议,而且 IE 8+,Firefox 3.5+,Chrome 4+,Safari 4+,Opera 12+ 都支持这种方式。其中 IE8 和 IE9 使用 XDomainRequest 对象,而其它
阅读全文
摘要:在通过 REST API 向第三方开放资源的网站中(比如 Dropbox,新浪微博等),许多都使用 OAuth 授权方式。这里总结下 OAuth 1.0 授权的过程。第三方要得到服务提供商的用户资源的使用权限,首先需要到服务提供商网站中申请自己的 oauth_consumer_key 和 oauth_consumer_secret。然后按照下面三步的方式获取用户授权。第一步是获取临时的 Request Token。第三方发送 oauth_consumer_key,oauth_timestamp,oauth_nonce,oauth_signature_method 和 oauth_signatu
阅读全文
摘要:REST(REpresentational State Transfer)Web 是一种轻量级的服务模式,通常用于构建 Web API,例如国外的 Skydrive,Dropbox,Twitter,国内的新浪微博等,都利用这种方式来提供第三方的服务接口。REST Web API 经常使用 http 或者 https 传输协议,我们可以看看 Dropbox 的 REST API 的例子:GET https://api.dropbox.com/1/account/infoGET https://api.dropbox.com/1/metadata/sandbox/hello.txtGET h...
阅读全文
摘要:对于桌面浏览器,通常我们用 screen.width 和 screen.height 得到屏幕的大小,然后用 window.innerWidth 和 window.innerHeight(对于标准浏览器)或者document.documentElement.clientWidth 和 document.documentElement.clientHeight(对于 IE8-)取得视区(viewport)的大小。知道了视区大小我们就可以让页面占满整个显示区域且不会出现窗口滚动条。对于桌面浏览器,默认视区大小一般总是小于屏幕大小的,因为还有操作系统和浏览器本身都要占用一定的空间。而对于手机浏览器,
阅读全文
摘要:元素的 z-index 属性规定了它的的层叠级别(stack level),这些级别确定了元素之间互相覆盖时的层叠顺序。但是 z-index 似乎没那么简单,这里总结一下。首先是层叠内容(stack context)的概念。层叠内容由下列这些元素形成(其中定位元素指 position 不为默认值 static 的元素):根元素 HTMLz-index 不为默认值 auto 的定位元素opacity 小于默认值 1 的元素但其中要注意几个问题:(1)对于非定位(即 position 为 static)的元素,设置 z-index 无效;(2)在 IE8 之前,定位元素的默认 z-index 为
阅读全文
摘要:在 IE 和 Fireofx 浏览器中都可以用window.showModalDialog 方法弹出一个模态窗口,在关闭该窗口之前,主窗口将不能操作。Chrome 虽然支持此方法,却只是将它当成普通的弹出窗口,没有禁止主窗口的操作。为了跨浏览器考虑,有必要用 DIV 和 CSS 生成模态窗口。基本的方法是,通过设置 z-index,用一个占满全部显示区域的覆盖层 DIV 放在主要内容前面,再将模态窗口 DIV 放在覆盖层前面。为了让用户知道主窗口的内容暂时不可使用,可以对覆盖层 DIV 设置半透明的灰色背景。例如(查看效果):<!DOCTYPE html><html>&
阅读全文
摘要:利用上一篇文章说明的方法,我们对事件添加了处理程序,然后可以来具体处理事件了。首先大部分浏览器会将event 对象作为参数传递给事件处理程序,从而我们可从 event 对象中读取事件的具体内容。但是在 IE9 之前用 DOM0 级方法添加的事件处理程序,event 事件是作为 window 对象的属性传递过去的。因此,我们需要用下面的方法保证跨浏览器的兼容性:var handler = function(event) { var ev = event ? event : window.event; alert(ev.type);};如果要得到触发该事件的元素,在标准浏览器中可以用 ...
阅读全文
摘要:首先是事件的类型:事件主要分为页面事件(例如 load,unload,resize,scroll,focus,blur),鼠标事件(例如 mousemove,mousedown,mouseup,click,dblclick,mouseover,mouseout)和键盘事件(例如 keydown,keyup,keypress)等类别。在不同的浏览器中,不同的 DOM 元素能触发的事件各不相同。而 window 对象这个特殊元素也能触发各种页面事件,但是在 IE9 之前的浏览器中不能触发鼠标事件和键盘事件,但我们可以用 document 元素的对应事件。用 JavaScript 绑定事件处理程序的
阅读全文
摘要:要全屏显示窗口,如果是新窗口可以用 window.open 方法指定 "fullscreen" 参数。但是出于安全考虑,现在大多数浏览器都会在全屏时显示地址栏或者状态栏,因此只能得到伪全屏的效果。如果是当前窗口,以前并没有好办法做到,只能提醒用户按 F11 键了。目前,在 HTML5 中已经有全屏显示 API 的草案了,而且 Chrome 15,Safari 5.1 和 Firefox 10 都支持它。但是,具体的写法还是稍有不同的。例如:// chrome and safarielement.webkitRequestFullScreen();document.webki
阅读全文
摘要:在 JavaScript 中可以用 window.open() 方法来弹出新窗口。例如:var win = window.open("newwin.html", "somename", "fullscreen");其中第一个参数指明在新窗口中载入的网页的 URL 地址;而第二个参数指明新窗口的名字,如果和已经打开的某窗口同名,将在该窗口打开而不另开新窗口;而第三个参数指明新窗口的各种外观属性,包括地址栏,状态栏,滚动条,大小位置,是否全屏等等,由于安全上的考虑,不少浏览器增加了对这些属性的限制,这些属性未必都有效。我们也可以将第一个参
阅读全文
摘要:Git 作为较新的版本控制系统,相对于 SVN 的最大特点就是它是分布式的。因此它的工作流程和 SVN 相比就有所不同了。首先需要将远程的 Git 版本库克隆(clone)下来,然后在本地修改后先提交(commit)到本地版本库,最后再推送(push)本地的所有修改到远程的版本库中去。一、基本用法最常见的使用方式就是类似这样的:克隆代码: git clone https://github.com/user/project.git添加修改: git add *提交修改: git commit -m "some log message"推送修改: git push origin
阅读全文
摘要:最近注册了域名,被 DNS 中的各种记录迷惑了半天。基本弄清楚后整理在这里。在互联网中,刚开始只用 IP 地址来区分各个服务器。IP 地址是一串数字,例如 192.168.34.56,当然不好记忆。后来就有了 DNS(Domain Name System)这个域名系统,可以给服务器指明一个域名,例如 www.example.com,通过域名同样可以访问该服务器。既然增加了域名这个东西,就需要另外的服务器,以提供域名和 IP 地址的对应关系的查询服务。这种特殊的服务器称为 NS(Name Server),即名称服务器。现在的域名的解析是树状的,从最后面开始逐级解析。比如对于 www.exampl
阅读全文

浙公网安备 33010602011771号