`
mowengaobo
  • 浏览: 164165 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

开发跨浏览器的JavaScript(转)

    博客分类:
  • js
阅读更多
2008 - 09 - 24

开发跨浏览器的JavaScript

关键字: 跨浏览器 javascript
在学习 << Ajax 基础教程 >>后对部分知识的总结和摘录

A 向表中追加行

将tr增加到 tbody 中,而不是直接增加到 table 中,如下
引用
<table>
   <tbody>
   </tbody>
</table>
向这个表中增加行的正确做法是把行增加到表体,而不是增加到表,如下:
Java代码 复制代码
  1. var cell =document.createElement( "td" ).appendChild(document.createTextNode( "foo" ));   
  2. var row = document.createElement( "tr" ).appendChild(cell);   
  3. document.getElementById( "myTableBody" ).appendChild(row);  
var cell =document.createElement("td").appendChild(document.createTextNode("foo"));
var row = document.createElement("tr").appendChild(cell);
document.getElementById("myTableBody").appendChild(row);
这个方法在所有的浏览器中都支持,而不加到表体中的如 ie 就不可以

B 通过 JavaScript 设置元素的样式
可以通过 JavaScript 使用 setAttribute 方法设置元素的样式,如把 span 元素中的文本修改为红色粗体显示,可以使用 SetAtribute 方法如下
Java代码 复制代码
  1. var sapnElement = document.getElementById( "myspan" );   
  2.     spanElment.setAttribute( "style" "font-weight:bold;color:red" );  
var sapnElement = document.getElementById("myspan");
	spanElment.setAttribute("style", "font-weight:bold;color:red");
这种方法除了 IE 在其他浏览器中都是可以实现的
对 IE 的解决办法是使用元素的 style 对象的 cssText 属性来设置的,得到广泛的支持
如下所示:
Java代码 复制代码
  1. var spanElement = document.getElementById( "myspan" );   
  2.     spanElement.style.cssText =  "font-weight:bold;color:red" ;  
var spanElement = document.getElementById("myspan");
	spanElement.style.cssText = "font-weight:bold;color:red";
这种办法贼大多数的浏览器上都可以实现除了 opera 以外。为了在所有浏览器中都可以实现,只有两种方法都执行
Java代码 复制代码
  1. var spanElement = document.getElementById( "myspan" );   
  2.     spanElement.style.cssText = "font-weight:bold;color:red" ;   
  3.     spanElment.setAttribute( "style" "font-weight:bold;color:red" );  
var spanElement = document.getElementById("myspan");
	spanElement.style.cssText ="font-weight:bold;color:red";
    spanElment.setAttribute("style", "font-weight:bold;color:red");



C 设置元素的 class 属性(内联样式)
使用 firefox 和 safari 之类的浏览,可以使用元素 setAttribute 方法来设置元素的 class 属性,如下所示
Java代码 复制代码
  1. var element = document.getElementById( "myElement" );   
  2.     element.setAttribute( "class" "styleClass" );  
var element = document.getElementById("myElement");
	element.setAttribute("class", "styleClass");
如果使用 setAttribute 方法,并指定属性名为 class ,IE 不会设置元素的 class 属性。相反,只使用 setAttribute 方法时 IE 会自己识别 className 属性,对于这种情况,完备的解决方法是:使用元素setattribute方法时,将 class 和className都用作属性名,如下所示:
Java代码 复制代码
  1. var element = document.getElementById( "myElement" );   
  2.         element.setAttribute( "class" "styleClass" );   
  3.         element.setAttribute( "className" "styleClass" );  
	var element = document.getElementById("myElement");
			element.setAttribute("class", "styleClass");
			element.setAttribute("className", "styleClass");


D 创建输入元素
Html 本身提供一组有限的输入元素,只是元素的 type 属性的值不同,选择框和文本区又自己特有的标记。通过 JavaScript 动态的创建输入元素(创建单选按钮除外)只要遵循简单的原则就行。
       考虑在哪里把新创建的元素增加到父元素中,必须注意 document.createElement和 setAttribute 语句的顺序。在某些浏览器中,只有创建了元素,而且正确的设置 type属性时,才会把新创建的元素增加到其父元素中。如下代码可能产生奇怪行为:
Java代码 复制代码
  1. document.getElementById( "formElement" ).appendChild(button);   
  2.     button.setAttribute( "type" "button" );  
document.getElementById("formElement").appendChild(button);
	button.setAttribute("type", "button");
为了避免奇怪的行为,确保创建输入元素后设置其所有属性,特别是 type 属性,然后在把它增加到父元素中,如下:
Java代码 复制代码
  1. var button = document.createElement( "input" );   
  2.     button.setAttribute( "type" "button" );   
  3.     document.getElementById( "formElement" ).appendChild(button);  
var button = document.createElement("input");
	button.setAttribute("type", "button");
	document.getElementById("formElement").appendChild(button);


E 向输入元素增加事件处理程序
向输入元素增加事件处理程序的标准做法是使用元素的 setAttribute 方法,它以事件名作为属性名,并把函数处理程序作为属性值,如下:
var formElement = document.getElementById("formElement");
formElement.setAttribute("onclick", "doFun();");
除了 IE ,上面代码在其他所有的浏览器都可用,如果要在 IE 中使用 JavaScript 设置元素的事件处理程序,必须对元素使用点击法来应用所需的事件处理程序,并把它赋为匿名函数,这个匿名函数要调用所需的事件处理程序。如下:
Java代码 复制代码
  1. var formElement = document.getElementById( "formElement" );   
  2.     formElement.onclick=function(){doFoo();}  
var formElement = document.getElementById("formElement");
	formElement.onclick=function(){doFoo();}
注意:是如何通过点击法从 formElement 引用 onclick 事件处理程序。onclick 事件处理程序赋为一个匿名函数,这个匿名函数只是调用了所有的事件处理程序,在这个例子中事件处理程序就是doFoo。
   幸运的是,这种技术得到 IE 和其他很多浏览器的支持。

F 创建单选按钮
通过 JavaScript 动态创建按选按钮是很费劲的。因为 IE 中创建单选按钮的方法和其他浏览器所有的方法大相径庭。
其他浏览器创建的方法
Java代码 复制代码
  1. var raidoButton = document.createElement( "input" );   
  2. raidoButton.setAttribute( "type" "radio" );   
  3. radioButton.setAttribute( "name" "radioButton" );   
  4. radioButton.setAttribute( "value" "checked" );  
var raidoButton = document.createElement("input");
raidoButton.setAttribute("type", "radio");
radioButton.setAttribute("name", "radioButton");
radioButton.setAttribute("value", "checked");
这个方法在 ie 中也可以显示但是无法将其显示
IE 中创建方法如下
Java代码 复制代码
  1. var radiobutton = document.createElement( "<input type='radio' name='radioButton' value='checked'>" );  
var radiobutton = document.createElement("<input type='radio' name='radioButton' value='checked'>");


IE 创建的单选按钮与其他的浏览器不兼容,方法很简单,使用浏览器的嗅探机制,使得在创建单选按钮时脚本就能知道该使用哪个方法。幸运的是不用检查大量不同的浏览器,假设只使用现代浏览器,脚本只需在 IE 和其他浏览器间进行分区就行了。
IE 能识别出名为 uniqueID 的 document 对象的专用属性。IE 是唯一能识别这个属性的浏览器,所以 uniqueID 很适合用来确定脚本是不是在 IE 中运行。
使用 document.uniqueID 属性来确定脚本在哪个浏览器中运行时,使用 IE 方法或是标准兼容 的方法,代码如下
Java代码 复制代码
  1. if (document.uniqueID) {   
  2.     var radiobutton = document.createElement( "<input type='radio' name='radioButton' value='checked'>" );   
  3. else  {   
  4. var raidoButton = document.createElement( "input" );   
  5. raidoButton.setAttribute( "type" "radio" );   
  6. radioButton.setAttribute( "name" "radioButton" );   
  7. radioButton.setAttribute( "value" "checked" );   
  8. }  
if(document.uniqueID) {
	var radiobutton = document.createElement("<input type='radio' name='radioButton' value='checked'>");
} else {
var raidoButton = document.createElement("input");
raidoButton.setAttribute("type", "radio");
radioButton.setAttribute("name", "radioButton");
radioButton.setAttribute("value", "checked");
}

分享到:
评论

相关推荐

    开发跨浏览器JavaScript时要注意的问题

    ### 开发跨浏览器JavaScript时要注意的问题 在进行Web开发时,跨浏览器兼容性问题一直是个让人头疼的话题。不同的浏览器对JavaScript的支持程度不一,尤其是在处理DOM元素时,开发者需要特别注意一些细节,确保代码...

    跨浏览器javascript时间日期组件

    总的来说,"跨浏览器JavaScript时间日期组件"如My97DatePicker,为Web开发者提供了强大的日期选择功能,极大地提高了开发效率和用户体验。在实际项目中,结合其详细的文档和示例,开发者可以快速集成和定制,打造出...

    跨浏览器解决方案

    4. **使用成熟的JavaScript库和框架**:jQuery、React、Vue等库和框架已经考虑了跨浏览器兼容性,使用它们可以减轻开发者的工作负担。 5. **自动化测试工具**:像BrowserStack、Sauce Labs这样的服务,允许开发者在...

    良田高拍仪跨浏览器控件SDKV2.3.0

    总之,良田高拍仪跨浏览器控件SDKV2.3.0是为Web开发者提供的一种高效工具,它简化了高拍仪在Web环境中的应用开发,提高了用户体验,同时也降低了维护成本。开发者可以根据具体需求,灵活地利用SDK提供的功能,打造...

    用于跨浏览器网页编程

    在进行网页开发时,由于不同的浏览器对于HTML、CSS及JavaScript的支持程度不一,开发者往往需要编写能够兼容多种浏览器的代码,即“跨浏览器编程”。本文将从一个具体的示例出发,深入探讨如何通过JavaScript来检测...

    跨浏览器控件SDK使用说明

    【跨浏览器控件SDK】是针对高拍仪设备和定制设备设计的一款软件开发工具包,其版本为V2.3.0。此控件能够兼容IE、Chrome和Firefox三大主流浏览器,并可在Win7、Win8、Win8.1以及Win10等操作系统上运行。为了确保控件...

    开发跨浏览器javascript常见注意事项

    在开发跨浏览器的JavaScript应用程序时,确保代码兼容不同的浏览器是非常重要的。以下是一些常见的注意事项,有助于优化JavaScript在不同浏览器之间的兼容性。 一、向表追加行 在JavaScript中向HTML表格添加行时,...

    javascript 跨浏览器的事件系统

    在探索跨浏览器的事件系统时,首先需要理解事件驱动编程的重要性以及JavaScript的事件模型。事件驱动编程是一种编程范式,在这种范式中,程序的流程由事件控制,例如用户与网页的交互动作、窗口行为、定时器到期等。...

    pushjs一个小巧的跨浏览器的JavaScript通知API的解决方案

    "pushjs一个小巧的跨浏览器的JavaScript通知API的解决方案" 指的是 Push.js 这个库,它是一个轻量级的工具,用于在各种浏览器上实现JavaScript的通知功能。Push.js旨在提供一种统一的API,使得开发者能够方便地在...

    跨浏览器纯JavaScript QRCode二维码插件

    【跨浏览器纯JavaScript QRCode二维码插件】 在现代互联网应用中,二维码作为一种高效的信息传递工具,被广泛应用在各个领域。EasyQRCodeJS是专为解决这一需求而设计的一款强大且灵活的JavaScript库,它允许开发者...

    跨浏览器打印网页数据

    综上所述,跨浏览器打印网页数据涉及的技术广泛,包括前端开发中的HTML、CSS和JavaScript,以及对不同浏览器特性的理解和兼容性处理。通过深入理解和熟练运用这些知识点,开发者可以创建出无论在哪种浏览器中都能...

    jQuery跨浏览器控制图标旋转代码.zip

    《jQuery跨浏览器控制图标旋转代码》 在网页开发中,我们常常需要实现各种动态效果,其中图标旋转就是一种常见的交互设计。jQuery库以其强大的DOM操作和事件处理能力,深受开发者喜爱,而“jQuery跨浏览器控制图标...

    支持跨浏览器的日历控件(包含有时分秒与无时分秒两种)

    总之,一个“支持跨浏览器的日历控件(包含有时分秒与无时分秒两种)”是Web开发中实用的工具,它的实现涵盖了多种前端技术,并需要考虑用户体验、浏览器兼容性和可访问性等多个方面。理解和掌握这些知识点对于提升...

    javascript跨浏览器的属性判断方法.docx

    ### JavaScript 跨浏览器属性判断方法 #### 概述 在前端开发过程中,由于不同浏览器对JavaScript API的支持程度不一,开发者经常会遇到兼容性问题。为了确保应用能够在多种浏览器上正常运行,开发人员需要掌握跨...

    紫光高速扫描仪跨浏览器驱动控件

    紫光高速扫描仪跨浏览器驱动控件是一款专为紫光高拍仪设计的重要软件组件,它使得用户可以在不同的网络浏览器环境下,如Chrome、Firefox、Safari、Edge等,有效地操作和控制紫光高速扫描仪进行文档扫描。这款控件的...

    开发跨浏览器的JavaScript方法说明第1/2页

    开发跨浏览器的JavaScript是一项至关重要的任务,因为不同的浏览器在实现JavaScript API时可能存在差异。了解这些差异可以帮助我们编写兼容性更强的代码,确保在各种浏览器环境下都能正常运行。 1. **childNodes的...

    javascript打造跨浏览器事件处理机制[Blue-Dream出品]

    在讨论如何使用JavaScript来创建一个跨浏览器的事件处理机制时,我们首先需要了解不同浏览器之间在事件处理方面的差异性,以及为了兼容这些差异,开发者们采取了哪些策略。以下是从给出的文件内容中提取出来的相关...

    一个用于为ChromeOpera和Firefox构建跨浏览器扩展的模板

    标题中的“一个用于为Chrome,Opera和Firefox构建跨浏览器扩展的模板”表明这是一个开发工具,专为创建可以在多个主流浏览器上运行的扩展程序而设计。这个模板可能包含了基础的框架和配置,使得开发者能够快速搭建并...

    js 日历 控件(可跨浏览器-国内样式)

    3. **跨浏览器兼容性**:不同的浏览器可能对JavaScript的支持程度不同,因此需要对IE、Firefox、Chrome、Safari、Edge等主流浏览器的差异进行处理,确保代码能在各种环境下正常运行。这通常需要用到像`feature ...

    跨浏览器控制图片旋转jquery插件jquery.rotate.js.zip

    由于不同的浏览器对某些CSS和JavaScript特性支持程度不同,这种跨浏览器兼容性至关重要。jQuery旋转插件通过提供统一的API,使得开发者可以编写一次代码,就能在多种浏览器上实现图片的旋转效果。 "jquery.rotate....

Global site tag (gtag.js) - Google Analytics