(转)跨浏览器编程之JavaScript

 

转自http://www.cnitblog.com/joyboy/archive/2008/04/16/js.html

 

<script></script>
序号操作分类IE
(6.0)
FireFox
(2.0)
Mozilla
(1.5)
当前
浏览器
备注
1"."访问tag的固有属性OKOKOKOK 
2"."访问tag的用户定义属性
eg: <input type="checkbox" myattr="test">
OKNONOOK 可以用getAttribute函数 替代
3obj.getAttribute 访问tag的固有属性OKOKOKOK

 

4obj.getAttribute 访问tag的用户定义属性
eg: <input type="checkbox" myattr="test">
OKOKOKOK

 

5document.all访问document的所有子元素
eg:document.all
OKOKNOOK建议用childNodes对象或者getElementById函数实现对应操作。
有人说它不能取Div元素,测试结果是可以,不知道是不是还有其它因素会影响测试结果。
6obj.all访问非document元素的所有子元素
eg: document.getElementById("mydiv").all
OKNONOOK同上
7 getElementById() 根据元素的id/name来取得元素。
如果元素只设置name属性,没有设置id属性。
OKNONOOK 注意:很多元素是没有name属性的,eg: td, div,span...
8变量名 = ""隐式定义变量-通过向变量名附值方式定义一个新的变量。OKOKOKOK建议:为避免必要的麻烦,显示定义变量。
eg:var tmp;
9id通过id直接调用对象
eg: test_result_1.innerHTML = ""
OKOKNOOK eval()函数用来执行脚本,所以向eval函数里面传入对象id/name的话,IE同样会返回对象的引用。
建议用document.getElementById(id)方式调用
注意:因为这个原因,IE中隐式定义的变量不能和HTML中元素的id/name相同。
10name通过name直接调用对象
eg: test_for_this_name.innerHTML = ""
OKNONOOK同上/ 原因同7
11name 支持的特殊字符("!",".","@","#","$","<",...)
eg: document.getElementsByName("aaaa!page");
NOOKOKNO其它的字符没有测试
12tr.innerHTML = ""设置TR元素的内部HTML脚本NOOKOKNO在IE中,table、tr的innerHTML是只读属性,不能够对其直接设置。可以通过insertRow/insertCell函数进行设置。
13cells对象访问访问tr的cells对象
前提:tr元素是被删除后的tr对象,或者是用cloneNode(true)复制的删除前的tr对象
NOOKOKundefined可以将其插入Table再访问,或者可以用getElementsByTagName函数 对td/th访问。
删除后的rows对象不存在这个问题。其它元素?
14(index)访问集合类对象
eg: document.
getElementsByTagName("TD")(0)
OKNONOOK建议用正式的操作符"[]".
15 obj.toString() 取得对象的字符串"[object 对象类型的名称]".
eg: td == "[object HTMLTableCellElement]"
NOOKOKNO 可以省略toString()函数,直接用对象来操作。
注:在IE中返回
"[object]"。
16 obj.class定义对象的css式样/风格。
eg: td.class="XPstyle";
NOOKNO- 无法写测试代码,会有编译错误!可以自己用typeof(class) == null来测试一下,没有异常就在代码中可以使用。
在HTML脚本中用class,但是在Javascript中应该用classname(class是JS的保留关键字).
注意:用 setAttribute可以把class值设置到对象中去,但是不会被当作css式样来解析。
17const保留关键字,用于定义常量。
eg:const HOURS = 24;
NOOKOK-暂时只能不使用const。
18input.type变更input元素的类型
eg: input.type="button";
NOOKOKNOIE可以初始input元素类型,但是不能变更类型。
如果必须变更,可以用更换input元素的方式。
19obj.children访问对象的子元素集合
eg: document.body.children.length;
OKNONOOK可以用childNodes对象替代。
20node.replaceNode替换新的节点对象
eg: oldNode.replaceNode(newNode);
OKNONOOK可以用replaceChild函数替换。
21node.removeNode删除已有节点对象
eg.oldNode.removeNode(true);
OKNONOOK可以用oldNode.parentNode.removeChild(oldNode)方式实现。
22node.insertBefore在指定节点对象前面插入一个节点对象
document.body.insertBefore(newN, oldN);
OKOKOKOK 
23obj.parentElement 访问对象的父元素
eg: document.body.parentElement.id;
OKNONOOK可以用parentNode对象替代。
24obj.childNodes.length返回子节点的数量,和tag的数量相同。
eg:document.body.childNodes.length;
OKNONOOK FF/Mozilla中,空白或者换行是文本节点,是childNodes的成员。
可以用node.getElementsByTagName()回避。
25obj.
insertAdjacentElement
向指定的位置插入元素
eg: obj.insertAdjacentElement("beforeBegin",button);
OKNONOOK insertAdjacentElement函数和insertAdjacentText函数也类似。
可以用insertBefore函数实现类似功能。
26createElement()创建指定类型元素。
前提:元素为HTML脚本
eg:document.createElment("<input type='radio' value='test'>");
OKNONOOK可以先创建出对象元素,再进行属性设置;或者直接以InnerHTML的形式加到对应位置。
 
27nodeName 取对象(tag,attribute,textnode)节点名称
eg: name = obj.nodeName;
OKOKOKOK有人说存在差异,不知道是具体的前提条件,先记录备考。
替代方案:
如果节点是tag元素可以用"tagName"取值;如果节点是attribut对象可以用"name"取值;如果节点是textnode元素可以用nodeType==3判断。
28window.event取得当前的事件对象
eg: window.event;
OKNONO?可以主动向事件的响应函数传入event参数。
eg:<a οnclick="javascript:showHelp(event)">help</a>
29event.target取得事件的触发对象
eg: e.target;
NOOKOK?可以和srcElement共同使用;可以主动向事件的响应函数传入触发对象元素。
eg:<a οnclick="javascript:showHelp(this, event)">help</a>
30event.srcElement取得事件的触发对象
eg: e.srcElement;
OKNONO?可以和target共同使用;可以主动向事件的响应函数传入触发对象。
eg: var obj = (e.target) ? e.target : e.srcElemtn;
31event对象属性当前三个浏览器的共同拥有的属性:
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函数注册OKNONO- 小心内存泄漏!!!
事件处理完后一定要调用detachEvent函数销毁事件,而且要注意避免重复注册。
33注册eventaddEventListener函数注册NOOKOK- 
34注册eventobj.onxxx = Function("响应函数名称或代码");方式注册
eg: btn.onclick = Function(doclick);
btn.onclick = Function("return 1+1;");
OKOKOK- 
35销毁eventdetachEvent函数销毁OKNONO- 
36销毁eventremoveEventListener函数销毁NOOKOK- 
37销毁eventobj.onxxx = null;方式注册
eg: btn.onclick = null;
OKOKOK- 
38触发eventfireEvent函数
eg:btn.fireEvent("onclick");
FF:
var e = document.createEvent("Events");
e.initEvent("click", true, false);
element.dispatchEvent(event)
OKNONO- 
39触发eventdispatchEvent函数
eg:
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true);
btn.dispatchEvent(evt);
NOOKOK- 

 

浏览器中执行JavaScript的方法与编程技巧 浏览器提供了一个强大的工具——开发者工具(Developer Tools),其中包含了控制台(Console)功能,可以实时执行 JavaScript 代码并查看结果。浏览器是执行 JavaScript 代码的主要环境之一,而本文将详细介绍如何在浏览器中打开和执行 JavaScript 代码的方法。除了使用控制台,我们还可以通过在 HTML 文档中嵌入内联脚本来执行 JavaScript 代码。如果我们有一个独立的 JavaScript 文件,我们可以通过外部脚本的方式引入并执行其中的代码。 阅读详情

相关推荐

使用Chrome浏览器进行编程

此外,Chrome浏览器还提供了网络分析工具,可以帮助您分析页面加载性能,并找出潜在的性能瓶颈。在"网络"选项卡中,您可以查看每个网络请求的详细信息,包括请求和响应的头部、时间线、传输大小等。例如,Chrome浏览器的"元素"选项卡允许您实时修改和预览HTML和CSS代码的更改。您可以通过在检查元素的样式规则上进行更改,即时查看更改的效果,并在满意后将更改应用到源代码中。此外,您还可以在源代码选项卡中设置断点,以便在代码执行到特定位置时暂停执行并允许您检查变量的值、执行单步调试操作等。

HnrzLinux的博客 859

聊聊Babel: 让你的 JavaScript 代码跨浏览器兼容

随着前端技术的快速迭代,「前端工程化」使得前端工程师的编程效率得到了大幅度提高。在平常的页面开发中,我们更多的是关注如何使用「ES6」、「ES7」这些新特性来进行更高效的工作,至于这些新特性是如何兼容不同浏览器和平台的,会由「Webpack」等脚手架帮我们处理。然而,只会使用「ES6」、「ES7」这些新特性是远远不够的,知其然并知其所以然,了解「Webpack」是如何将这些新特性语言转换为浏览器兼...

LuckyWinty的博客 812

Microsoft Edge浏览器简介及编程实践

通过使用JavaScript、Web APIs和扩展功能,开发者可以利用Edge浏览器强大的功能来构建丰富的Web应用程序。除了一般的网络浏览功能外,Edge还提供了丰富的编程接口,使开发者能够利用浏览器的强大功能来构建丰富的Web应用程序。除了基本的Web开发功能外,Microsoft Edge浏览器还支持扩展功能,允许开发者创建自定义的浏览器插件和扩展。在本文中,我们将介绍一些Microsoft Edge浏览器的编程特性,并提供一些示例代码来帮助你开始使用这些功能。在上面的代码中,我们使用。

TechBurst的博客 739

掌握 JavaScript 跨浏览器测试

跨浏览器测试在 Web 开发中至关重要,以确保您的应用程序在不同的浏览器和设备之间无缝运行。让我们深入研究跨浏览器测试的各个方面,通过简单的标题和代码示例来说明每一点。跨浏览器测试简介跨浏览器测试可确保您的 Web 应用程序在不同 Web 浏览器及其版本上的行为一致。它有助于识别和修复由于不同浏览器对 Web 标准的不同实现而可能出现的兼容性问题。为什么跨浏览器测试很重要?执行测试的策略有效的跨浏览器测试需要一种涵盖所有基础的战略方法。1. 定义您的目标浏览器确定目标受众最常用的浏览器和版本。

liangshanbo1215的博客 792

浏览器中注入 JavaScript 的编程方法

在浏览器中,我们可以使用多种方法来注入 JavaScript 代码,以实现特定的功能和交互效果。本文将介绍一些常见的浏览器中注入 JavaScript 的编程方法,并提供相应的源代码示例。一种常见的方式是通过编写浏览器插件来实现 JavaScript 的注入。每种方法都有其适用的场景和优劣势,开发者可以根据具体需求选择合适的方式来进行 JavaScript 的注入操作。将上述代码保存为一个书签,然后在需要注入 JavaScript 的页面中点击该书签,即可执行相应的 JavaScript 代码。

2301_79331230的博客 1494

自制简易浏览器编程实践

在上面的代码中,我们在onCreate方法中首先获取了WebView的引用,并通过findViewById方法与布局文件中的WebView组件进行关联。接下来,我们为WebView设置了一个WebViewClient,这样网页将在WebView中加载,而不是跳转到默认的浏览器应用程序。接下来,我们需要在MainActivity类中定义一个WebView对象,并在onCreate方法中初始化它。接下来,我们需要在MainActivity.java文件中编写代码,以便在WebView中加载网页。

HackMasterX的博客 409

qrcode.js:跨浏览器的JavaScript二维码生成库

qrcode.js是一个广受欢迎的JavaScript库,专门用于在网页上生成二维码。该库利用HTML5的Canvas元素和DOM中的表格标签来实现二维码的跨浏览器兼容性。qrcode.js由David Shim开发并维护,它的一大亮点是完全不依赖于其他外部库,确保了其轻量级和易集成的特点。项目采用的主要编程语言是JavaScript。 ## 核心功能 - **二维码生成**:允许开发者通过简单...

gitblog_09483的博客 695

统一大型语言模型和知识图谱:路线图

大型语言模型(LLM),如ChatGPT和GPT4,由于其涌现能力和泛化性,正在自然语言处理和人工智能领域掀起新的浪潮。然而,LLM是黑箱模型,通常无法捕捉和获取事实知识。相反,知识图谱(KGs),例如维基百科和华普,是显式存储丰富事实知识的结构化知识模型。KGs可以通过为推理和可解释性提供外部知识来增强LLM。同时,KGs很难从本质上构建和演化,这对KGs中现有的生成新事实和表示未知知识的方法提出了挑战。因此,将LLM和KGs统一在一起并同时利用它们的优势是相辅相成的。

qq_32907491的博客 2842

【亲测免费】 React Hook 实现语音转文字:高效、跨浏览器的解决方案

React Hook 实现语音转文字:高效、跨浏览器的解决方案 项目介绍 react-hook-speech-to-text 是一个基于 React Hook 的语音转文字工具,能够将麦克风输入的语音实时转换为文本。该项目支持跨浏览器语音转文字功能,并且默认使用 Chrome 浏览器支持的 SpeechRecognition API,无需额外设置或 API 密钥,即可开箱即用。 项目技术分析 技术...

gitblog_00562的博客 1101

LLM and Embedding区别

LLM(大语言模型)和 Embedding(嵌入)是自然语言处理(NLP)中的两个核心概念,它们的核心区别在于。Embedding 计算向量。

u010674101的专栏 1876

ArcGISPro小白必看:5分钟搞定3D地形图制作(附免费数据源)

本文为ArcGISPro初学者提供5步制作专业3D地形图的完整指南,涵盖免费数据获取、项目初始化、数据预处理、3D场景构建和成果输出等关键步骤。特别推荐使用NASA的SRTM高程数据和吉林一号卫星影像,帮助用户快速掌握3D地形图制作技巧,适用于教学演示和科研分析。

weixin_28314575的博客 242

开发跨浏览器的JavaScript

开发跨浏览器的JavaScript判定浏览器类型:if(document.uniqueID)如果为TRUE是IE,否则非IE。1向表中追加行2通过JAVASCRIPT设置元素的样式3设置元素的CLASS属性4创建输入元素5向输入元素增加事件处理程序6创建单选按钮 1.   var cell = document

笨笨熊的专栏 748

涨姿势|小众建模软件Make human,MakeClothes插件使用详解教程(2)

衣服可以从头开始建模,或者通过改变人体网格或由MakeClothes工具提供的“服装助手”(见下文)来建模。在设计和建模一件衣物时,应该记住两个限制。首先,将服装网格映射到人体网格的算法要求服装网格完全由四面体组成。其次,知道MakeClothes每件衣服只支持一种材料是很重要的。 完成MakeClothes工作流程后,您的HOME / makehuman / v1 / data / clothes中的工具将创建一个新文件夹。该文件夹将采用用户为服装项目提供的唯一名称。该文件夹将填充必要的资源,以使该项目在

Crazy_in_3Dmax的博客 1875

基于python的简单浏览器的制作

基于python的简单浏览器制作已经打包成代码项目,可.exe打开

qq_64470623的博客 2844

置顶必读(1) | 滚雪球学Oracle教程导航帖,带你弯道超车(持续更新中)

什么是数据库管理系统(DBMS),Oracle在行业中的领先地位Oracle数据库的市场竞争与主要应用场景Oracle数据库的核心功能模块与未来技术发展趋势约束的高级应用:主键、唯一性、外键设计与管理表分区、视图、同义词与序列的最佳实践PL/SQL编程的设计哲学,如何高效使用Oracle SQL DeveloperPL/SQL代码调试与优化技巧RAC集群中的高可用性设计,负载均衡与并行查询的配置集群中的缓存一致性管理。

**My Coding Family** 1万+

从苏宁电器到卡巴斯基第02篇:我的本科时光(中)

怎么还分班了呢? 大概是在大二第二学期的时候吧,学院突然通知我们要分班。因为我们目前所有学生都是属于工商管理专业的,而从下个学期开始,就要分为会计、市场营销以及工商管理这三个方向。这还真是打了我一个措手不及,我都不知道还有分班这一回事。不过也没关系,我继续选择我的工商管理就好了。不过,在实际的选择结果上,像会计和工商管理这种学科,选的人自然是占了绝大多数,而选择市场营销的,大概也就是十

Gleam的专栏 9607

浏览器编程_在浏览器中进行编程几乎在这里

浏览器编程Earlier this year, GitHub announced a few new features during its Satellite 2020 event to help developers across the globe. One of these new features is Codespaces, which GitHub calls “your insta...

weixin_26717681的博客 1398

【第33话:车辆控制】自动驾驶车辆运动学模型推导及详解

自动驾驶车辆的运动学模型以自行车模型为核心,通过状态方程。

一碗白开水一 832

C# 网络编程之最简单浏览器实现

最近学习C#网络编程的HTTP相关协议编程,HTTP即Hypertext Transfer Protocol的缩写,意为:超文本传输协议。其中与HTTP相关的知识主要包含五个类的知识,分别是:(1).HttpWebRequest类:用于获取和操作HTTP请求; (2).HttpWebResponse类:用于获取和操作HTTP应答; (3).WebRequest类:用于获取和操作Web请求;

杨秀璋的专栏 2万+

C#WPF常用的9种布局方式详解

本文介绍WPF中常用的九种布局,Grid、StackPanel、WrapPanel、DockPanel、UniformGrid、Canvas、ScrollViewer、ViewBox、Border。

qq_30725967的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

BOM编程

组成,应用API,常用方法,实例

bugnotfound的博客 980

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JavaScript------总结

javascript是一个基于浏览器的客户端编程语言,是浏览器默认的脚本语言 是一门基于面向对象的弱类型语言 node.js是基于 javascript的 服务端技术

weixin_52953038的博客 707

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

MouseEvent代替initMouseEvent

由于initMouseEvent方法被摒弃,使用MouseEvent的构造函数方法

时光留不住,毕竟东流去 1849

让Ipad买前爱奇艺买后生产力——浏览器编程之Projector运行Idea(超详细)

在 docker 里跑了一个 projector 容器,就可以在 ipad 上编程了

m0_59363151的博客 4527

java 跨浏览器的javascript脚本编写_开发跨浏览器的JavaScript方法说明

开发跨浏览器的JavaScript方法说明更新时间:2008年08月14日 08:50:59 作者:IE是当前浏览器的一个异类,不过解决方法倒也相当简单,使用Firefox和Safari 之 类的浏览时,可以使用元素的setArribute方法来设置元素的class属性开发跨浏览器的JavaScript1.childNodes在ff中和ie的区别。ff中的node(nodeType=1)...

weixin_39946500的博客 144
上一篇: HtmlEditor Readonly 或 Disabled
下一篇: Portal 拖动 保存位置 
fireinjava
博客等级 码龄20年 5粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值