- 浏览: 2838763 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (1173)
- 名言警句 (5)
- 心情随笔 (50)
- 数据库 (57)
- Java基础 (241)
- J2EE框架 (91)
- 数据结构 (12)
- 程序设计 (21)
- WEB技术 (128)
- 网络日志 (12)
- IT资讯 (247)
- linux (64)
- solaris (2)
- 其它 (143)
- WebService (4)
- 日语学习 (2)
- 机器人 (5)
- Android (5)
- cgywin (3)
- Game (1)
- DWR (1)
- spring (8)
- canvas (1)
- Guava (3)
- Modbus (5)
- 测试 (6)
- mongodb (9)
- Quartz (2)
- Cron (1)
- windows (2)
- 持续集成 (1)
- bootstrap (3)
- 结对编程 (1)
- nodejs (1)
- Netty (1)
- 安全 (3)
- webstorm (2)
- sparkline (1)
- Job (1)
- git (3)
- Maven (3)
- knockout (5)
- jquery (1)
- bower (1)
- docker (1)
- confluence (4)
- wiki (1)
- GoogleMap (1)
- jekyll (10)
- ruby (2)
- npm (3)
- browserify (1)
- gulp (3)
- openwrt (1)
- discuz (3)
- 输入法 (1)
- JPA (1)
- eclipse (2)
- IntelliJ (1)
- css (1)
- 虚拟机 (1)
- 操作系统 (1)
- azkaban (2)
- scrum (1)
最新评论
-
pangxiea_:
你好, 想请问一下 Linux下 这么使用rxtxcomm 在 ...
使用Java进行串口通信 -
abababudei:
请教一下,这个您是怎么解决的:/dev/ttyS2enteri ...
Java应用程序的MODBUS通讯 -
xuniverse:
hannibal005 写道楼主,我问下 request.se ...
用javascript与java进行RSA加密与解密 -
atxkm:
找了一下午,终于找到了
gulp 拷贝文件时如何移除文件目录结构 -
kalogen:
gtczr 写道非常感谢,经过我自己的修改,已经完美实现。发出 ...
用javascript与java进行RSA加密与解密
刚参加工作的时候,曾经被一位日本高级工程师所折服,他所写的JavaScript代码非常工整、清晰,浏览器差异都非常的清楚。一直都很佩服他,同时很 讨厌浏览器的差异。然而程序员就是这样,很多事情都必须面对,譬如说现在就必须做跨浏览器的应用。网络上没有直接的好咚咚,没办法,一点一滴从零开始积 累,为自己为他人提供便利。
<script>
function fixWidth() {
var d = document.getElementById("div_area_width");
var w = d;
while(w) {
if (w.tagName == "DIV" && w.className == "post") break;
w = w.parentNode;
}
if (w && d) {
var tmp = w.clientWidth - 50;
if (tmp <600) {
tmp = w.offsetWidth - 50;
}
d.style.width = tmp;
}
}
fixWidth();
</script>
序号 | 操作 | 分类 | IE (6.0) |
FireFox (2.0) |
Mozilla (1.5) |
当前
浏览器 |
备注 |
1 | "." | 访问tag的固有属性 | OK | OK | OK | OK | |
2 | "." | 访问tag的用户定义属性 eg: <input type="checkbox" myattr="test" > |
OK | NO | NO | undefined | 可以用 getAttribute函数 替代 |
3 | obj.getAttribute | 访问tag的固有属性 | OK | OK | OK | OK |
|
4 | obj.getAttribute | 访问tag的用户定义属性 eg: <input type="checkbox" myattr="test" > |
OK | OK | OK | OK |
|
5 | document.all | 访问document的所有子元素 eg:document.all |
OK | OK | NO | OK | 建议用childNodes
对象或者getElementById函数
实现对应操作。 有人说它不能取Div元素,测试结果是可以,不知道是不是还有其它因素会影响测试结果。 |
6 | obj.all | 访问非document元素的所有子元素 eg: document.getElementById("mydiv").all |
OK | NO | NO | undefined | 同上 |
7 | getElementById () | 根据元素的id/name来取得元素。
如果元素只设置name属性,没有设置id属性。 |
OK | NO | NO | NO | 注意: 很多元素是没有name属性的,eg: td, div, span... |
8 | 变量名 = "" | 隐式定义变量-通过向变量名附值方式定义一个新的变量。 | OK | OK | OK | OK | 建议:为避免必要的麻烦,显示定义变量。 eg:var tmp; |
9 | id | 通过id直接调用对象 eg: test_result_1.innerHTML = "" |
OK | OK | NO | OK | eval()
函数用来执行脚本,所以向eval函数里面传入对象id
/name的话,IE同样会返回对象的引用。
建议用document.getElementById(id) 方式调用 注意: 因为这个原因,IE中隐式定义的变量不能和HTML中元素的id/name相同。 |
10 | name | 通过name直接调用对象 eg: test_for_this_name.innerHTML = "" |
OK | NO | NO | NO | 同上/ 原因同7 |
11 | name | 支持的特殊字符(
"
!
"
,
".","
@
"
,
"
#
"
,
"
$
"
,
"
<
",
...) eg: document.getElementsByName("aaaa!page"); |
NO | OK | OK | OK | 其它的字符没有测试 |
12 | tr.innerHTML = "" | 设置TR元素的内部HTML脚本 | NO | OK | OK | OK | 在IE中,table、tr的innerHTML是只读属性,不能够对其直接设置。可以通过insertRow/insertCell 函数进行设置。 |
13 | cells对象访问 | 访问tr的cells对象 前提:tr元素是被删除后的tr对象,或者是用cloneNode(true)复制的删除前的tr对象 |
NO | OK | OK | OK | 可以将其插入Table再访问,或者可以用getElementsByTagName
函数 对td/th访问。 删除后的rows对象不存在这个问题 。其它元素? |
14 | (index) | 访问集合类对象 eg: document. getElementsByTagName("TD")(0) |
OK | NO | NO | NO | 建议用正式的操作符"[]". |
15 | obj.toString() | 取得对象的字符串"
[object
对象类型的名称]
".eg: td == "[object HTMLTableCellElement]" |
NO | OK | OK | OK | 可以省略
toString()
函数,直接用对象来操作。 注:在IE中返回 "[object]"。 |
16 | obj.class | 定义对象的css式样/风格。 eg: td.class="XPstyle"; |
NO | OK | NO | - | 无法写测试代码,会有编译错误!可以自己用typeof(class) == null来测试一下,没有异常就在代码中可以使用。
在HTML脚本中用class,但是在Javascript中应该用classname (class是JS的保留关键字). 注意: 用 setAttribute可以把class值设置到对象中去,但是不会被当作css式样来解析。 |
17 | const | 保留关键字,用于定义常量。 eg:const HOURS = 24; |
NO | OK | OK | - | 暂时只能不使用const。 |
18 | input.type | 变更input元素的类型 eg: input.type="button"; |
NO | OK | OK | OK | IE可以初始input元素类型,但是不能变更类型。 如果必须变更,可以用更换input元素的方式。 |
19 | obj.children | 访问对象的子元素集合 eg: document.body.children.length; |
OK | NO | NO | undefined | 可以用childNodes 对象替代。 |
20 | node.replaceNode | 替换新的节点对象
eg: oldNode.replaceNode(newNode); |
OK | NO | NO | NO | 可以用replaceChild 函数替换。 |
21 | node.removeNode | 删除已有节点对象 eg.oldNode.removeNode(true); |
OK | NO | NO | NO | 可以用oldNode.parentNode.removeChild(oldNode) 方式实现。 |
22 | node.insertBefore | 在指定节点对象前面插入一个节点对象 document.body.insertBefore(newN, oldN); |
OK | OK | OK | OK | |
23 | obj.parentElement | 访问对象的父元素 eg: document.body.parentElement.id; |
OK | NO | NO | undefined | 可以用parentNode 对象替代。 |
24 | obj.childNodes.length | 返回子节点的数量,和tag的数量相同。 eg:document.body.childNodes.length; |
OK | NO | NO | NO | FF/Mozilla中,空白或者换行是文本
节点,是childNodes的成员。 可以用node.getElementsByTagName() 回避。 |
25 | obj. insertAdjacentElement |
向指定的位置插入元素 eg: obj.insertAdjacentElement("beforeBegin",button); |
OK | NO | NO | undefined | insertAdjacentElement
函数和insertAdjacentText
函数也类似。 可以用insertBefore 函数实现类似功能。 |
26 | createElement() | 创建指定类型元素。 前提:元素为HTML脚本 eg:document.createElment("<input type='radio' value='test'>"); |
OK | NO | NO | NO | 可以先创建出对象元素,再进行属性设置;或者直接以InnerHTML的形式加到对应位置。 |
27 | nodeName | 取对象(tag,attribute,textnode)节点名称
eg: name = obj.nodeName; |
OK | OK | OK | OK | 有人说存在差异,不知道是具体的前提条件,先记录备考。 替代方案: 如果节点 是tag元素可以用"tagName"取值;如果节点 是attribut对象可以用"name"取值;如果节点是textnode元素 可以用nodeType==3判断。 |
28 | window.event | 取得当前的事件对象 eg: window.event; |
OK | NO | NO | ? | 可以主动向事件的响应函数传入event参数。 eg:<a onclick="javascript:showHelp(event)">help</a> |
29 | event.target | 取得事件的触发对象 eg: e.target; |
NO | OK | OK | ? | 可以和srcElement共同使用;可以主动向事件的响应函数传入触发对象元素。 eg:<a onclick="javascript:showHelp(this, event)">help</a> |
30 | event.srcElement | 取得事件的触发对象 eg: e.srcElement; |
OK | NO | NO | ? | 可以和target共同使用;可以主动向事件的响应函数传入触发对象。 eg: var obj = (e.target) ? e.target : e.srcElemtn; |
31 | event对象属性 | 当前三个浏览器的共同拥有的属性: altKey button cancelBubble clientX clientY ctrlKey screenX screenY shiftKey type |
altLeft behaviorCookie behaviorPart bookmarks boundElements contentOverflow ctrlLeft dataFld dataTransfer fromElement keyCode nextPage offsetX offsetY propertyName qualifier reason recordset repeat returnValue srcElement shiftLeft srcFilter srcUrn toElement wheelDelta x y |
bubbles cancelable currentTarget detail eventPhase explicitOriginalTarget isChar isTrusted layerX layerY metaKey originalTarget pageX pageY rangeOffset rangeParent relatedTarget target timeStamp view which |
bubbles cancelable charCode currentTarget detail eventPhase explicitOriginalTarget isChar keyCode layerX layerY metaKey originalTarget pageX pageY popupWindowURI rangeOffset rangeParent relatedTarget requestingWindowURI target timeStamp view which |
? | event对象的不同点太多,在使用的时候需要一一检查才行。具体可以用页面下方的测试区域试验。 |
32 | 注册event | 用attachEvent函数注册 | OK | NO | NO | - | 小心内存泄漏!!!
事件处理完后一定要调用detachEvent函数销毁事件,而且要注意避免重复注册。 |
33 | 注册event | addEventListener函数注册 | NO | OK | OK | - | |
34 | 注册event | obj.onxxx = Function("响应函数名称或代码");方式注册 eg: btn.onclick = Function(doclick); btn.onclick = Function("return 1+1;"); |
OK | OK | OK | - | |
35 | 销毁event | detachEvent函数销毁 | OK | NO | NO | - | |
36 | 销毁event | removeEventListener函数销毁 | NO | OK | OK | - | |
37 | 销毁event | obj.onxxx = null;方式注册 eg: btn.onclick = null; |
OK | OK | OK | - | |
38 | 触发event | fireEvent函数 eg:btn.fireEvent("onclick"); FF: var e = document.createEvent("Events"); e.initEvent("click", true, false); element.dispatchEvent(event) |
OK | NO | NO | - | |
39 | 触发event | dispatchEvent函数 eg: var evt = document.createEvent("MouseEvents"); evt.initMouseEvent("click", true, true); btn.dispatchEvent(evt); |
NO | OK | OK | - |
发表评论
-
30个你必须熟记的CSS选择器
2015-06-27 08:44 1741你学会了基本的id,class类选择器和descendant ... -
40 个超棒的免费 Bootstrap HTML5 网站模板
2015-04-11 16:12 2624Bootstrap 是快速开发Web应用程序的前端工具包。它 ... -
必须记住的 30 类 CSS 选择器
2014-12-30 08:56 959大概大家读知道`id`,`class`以及`descenda ... -
如何防止google map 加载Roboto字体
2014-12-26 13:16 840思路是在window.onload中当检测到加载Roboto ... -
JavaScript Equality Table
2014-12-09 16:17 1812Tables displaying the issue: ... -
WebStorm快捷键收集
2014-11-25 10:40 29781、webstorm快捷键: IntelliJ-Idea ... -
webstorm 常用快捷键
2014-08-25 15:58 915常用快捷键 Ctrl+/ 或 Ctrl+Shift+/ ... -
how to change bower components folder
2014-08-25 09:26 7441. create the file bower.json ... -
程序员应该知道的 13 个设计技巧
2014-07-14 09:34 709开发你的美感 … 我最喜欢的站点是: a ... -
tomcat7中tomcat-users.xml配置
2014-04-26 15:48 698将以下代码加入tomcat-users.xml中,即可登录t ... -
tomcat-maven-plugin的使用
2014-03-04 10:52 852环境: Ubuntu 8.10, tomcat6, ma ... -
Jsp动态显示服务器时间
2013-12-31 13:16 1051<script language=" ... -
前端工程与性能优化(下):静态资源管理与模板框架
2013-09-25 08:57 949本系列文章从一个全新的视角来思考web性能优化与前端工程之间 ... -
前端工程与性能优化(上):静态资源版本更新与缓存
2013-09-20 09:35 949每个参与过开发企业级 ... -
Handy and Useful jQuery Snippets for Developers
2013-09-18 15:43 779jQuery is a cross browser Java ... -
11 个用来创建图形和图表的 JavaScript 工具包
2013-08-13 07:00 1284Aristochart DEMO || Download ... -
Jive 论坛 license破解
2013-08-03 13:27 12901. 找到文件 \admin\global.jspf 注释 ... -
2012年度最佳Web前端开发工具和框架
2013-01-10 10:52 15882012年,Web 开发领域继续在快速的发展,HTML5 ... -
为网页设计师准备的 10 个色彩方案生成器
2012-02-22 23:01 1148Pictaculous ColorExplo ... -
13个最常用的CSS和HTML快速开发工具
2012-02-21 08:18 12081)CleverCSS CleverCSS ...
相关推荐
javascript判断跨浏览器网页编程。
JavaScript一种直译式脚本语言,是一种动态...它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
已经得到所有现代浏览器的支持,这使得跨平台Web开发成了一件轻松惬意的事。 本书是超级畅销书的升级版,由倡导Web标准的领军人物执笔,揭示了前端开发的真谛,是学习JavaScript和DOM开发的必读之作。 本 书在简洁...
JavaScript脚本用于创Web浏览器支持的交互式网页,是一咱简单易学的Web编程语言。本书全面介绍了客户端JavaScript脚本编程技术。从简单介绍JavaScript与Web开始,循序渐进地介绍了Web浏览器、基本的编程技巧和编程...
《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码...
JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码重用为目的的继承模式;BOM、DOM、浏览器事件...
Javascript是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决...于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。
JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码重用为目的的继承模式;BOM、DOM、浏览器事件...
document对象常用属性和方法 window对象的常用属性和方法 history对象的常用属性和方法 location对象的常用属性和方法
从颇具深度的JavaScript语言基础到作用域(链),从引用类型到面向对象编程,从极其灵活的匿名函数到闭包的内部机制,从浏览器对象模型(BOM)、文档对象模型(DOM)到基于事件的Web脚本设计,从XML(E4X)到Ajax及JSON,从...
第1章 JavaScript简史 1.1 JavaScript的起源 1.2 DOM 1.3 浏览器战争 1.3.1 DHTML 1.3.2 浏览器之间的冲突 1.4 制定标准 1.4.1 浏览器以外的考虑 1.4.2 浏览器战争的结局 1.4.3 崭新的起点 1.5 小结 第2章 ...
只需要具备一些HTML和JavaScript的基础知识 就可以开启我们的Android Web Game App高级编程之旅 从一个空白的HTML网页开始 最后将收获多人在线游戏 有丰富多彩的图像 声音 动画等 开发必需的一些知识和技巧 即使你...
简单地说,JavaScript是一种运行在浏览器中的解释型的编程语言。在Web世界里,只有JavaScript能跨平台、跨浏览器驱动网 页,与用户交互。 《JavaScript全栈教程》是小白的零基础JavaScript全栈教程。从基础入门在...
javascript高级编程的JavaScript开始讲起,直到当前它对XML和Web服务的具体支持,内容主要涉及JavaScript的语言特点、JavaScript与浏览器的交互、更高级的JavaScript技巧,以及与在Web应用程序中部署JavaScript解决...
从颇具深度的javascript语言基础到作用域(链),从引用类型到面向对象编程,从极其灵活的匿名函数到闭包的内部机制,从浏览器对象模型(bom)、文档对象模型(dom)到基于事件的web脚本设计,从xml(fax)到ajax及json,从...
目前River Trail还是作为一个Firefox浏览器扩展存在的,尚不清楚是否会引起其他厂家的注意并引入到各自的Javascript引擎中,例如V8。另外, 在原文的评论部分,Intel还解释了River Trail和Web Workers的不同,并欢迎...
配图列表 列表 1 说明 1.1 主要的内容 1.2 学习目标 2 了解JavaScript 浏览器上的程序语言 2.1 JavaScript 操作对象的简单介绍-- 属性和方法 2.2 JavaScript 代码的加入 2.2.1 加入...