`
wqyang
  • 浏览: 10959 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

常用跨浏览器javascript几例

阅读更多
根据众浏览器的特点,从《Foundations of Ajax》中总结几则跨浏览器的javascript代码如下:

1. 向表中追加行

为了写出通用的Javascript代码实现向表中追加行,必须将新增加的行append到tbody元素中(IE),而不能直接append到table元素。
<table id="myTable">
    <tbody id="myTableBody"></tbody>
</table>

var cell=document.createElement("td").appendChild(document.createTextNode("foo"));
var row=document.createElement("tr").appendChild(cell);
document.getElementById("myTableBody").appendChild(row);

以上代码可实现包括IE在内的所有浏览器兼容。

2. 通过javascript设置元素样式

除IE外可使用如下代码实现span内文字样式的改变:
var spanEle=document.getElementById("mySpan");
spanEle.setAttribute("style","font-weight:bold;color:red;");

但IE是个例外,必须使用点记法加cssText属性设置:
var spanEle=document.getElementById("mySpan");
spanEle.style.cssText="font-weight:bold;color:red;";

但这样又有人不高兴了,这个人叫Opera,所以要实现完全通用,就得双管齐下:
var spanEle=document.getElementById("mySpan");
spanEle.setAttribute("style","font-weight:bold;color:red;");
spanEle.style.cssText="font-weight:bold;color:red;";

哎,真是众口难调啊!

3. 设置元素的class属性:

2中提到使用style属性设置元素的内联样式,其实设置元素的class属性同样存在一些特异性,这个异类就是IE。没有办法,IE仍然占有相当大的市场,我们还得顾着它。且看代码:

非IE中使用class作为属性名:
var ele=document.getElementById("myElement");
ele.setAttribute("class","styleClass");

IE中非要用className,“我就个性,怎么着吧?”:
var ele=document.getElementById("myElement");
ele.setAttribute("className","styleClass");

通用办法,双管齐下:
var ele=document.getElementById("myElement");
ele.setAttribute("class","styleClass");
ele.setAttribute("className","styleClass");


4. 创建输入元素

这里强调的是创建子元素,设置子元素属性及将子元素追加到父元素的顺序,如不按这个顺序,某些浏览器可能会产生不同的效果。
var button=document.createElement("input");
button.setAttribute("type","button");
document.getElementById("myForm").appendChild(button);


5. 设置元素的事件处理程序

在非IE浏览器中,可以像设置元素属性一样设置元素的事件处理程序,如下所示:
var ele=document.getElementById("myElement");
ele.setAttribute("onclick","doFoo();");

但在IE中,必须使用点记法加匿名函数的方式:
var ele=document.getElementById("myElement");
ele.onclick=function(){doFoo();};

还好大家都很宽容,都支持这种点记法加匿名函数的方式,所以程序员只需要用这种方式就可以了。

5. 创建单选按钮

非IE中:
var radioButton=document.createElement("input");
radioButton.setAttribute("type","radio");
radioButton.setAttribute("name","radioButton");
radioButton.setAttribute("value","checked");

但这样优雅的代码在IE中却不能完全正常工作,体现在生成的按钮无法选中。
IE中的方法:
var radioButton=document.createElement("<input type='radio' name='radioButton' value='checked'>");

为了满足大多数人的需要,同时照顾少数人的利益,我们需要在这里做个判断,判断的基准是document下面一个叫uniqueID的属性,只有IE才能识别这个属性(怎么样,个性吧~)。那么代码就可以这样来写:
if(document.uniqueID){
    // Internet Explorer
    var radioButton=document.createElement("<input type='radio' name='radioButton' value='checked'>");
}
else {
    // Standard Compliant
    var radioButton=document.createElement("input");
    radioButton.setAttribute("type","radio");
    radioButton.setAttribute("name","radioButton");
    radioButton.setAttribute("value","checked");
}


好吧,我们现在就先记住这些特例吧,强烈期待浏览器世界的大团结!
分享到:
评论

相关推荐

    程序员常用JavaScript特效源码600例

    5. **浏览器兼容性**:由于JavaScript在不同浏览器上的实现可能存在差异,所以源码可能包含了针对IE、Firefox、Chrome、Safari等浏览器的兼容性解决方案,如使用jQuery等库来简化跨浏览器的编程。 6. **动画与...

    100个直接可以拿来用的JavaScript实用功能代码片段(1-10)

    53、原生JavaScript跨浏览器删除事件 54、原生JavaScript去掉url前缀 55、原生JavaScript随机数时间戳 56、原生JavaScript全角半角转换,iCase: 0全到半,1半到全,其他不转化 57、原生JavaScript确认是否键盘有效...

    前端跨界开发指南:JavaScript工具库原理解析与实战.docx

    跨浏览器兼容性问题也是开发者需要面对的挑战,不同的浏览器对JavaScript的支持程度不一,工具库需要确保在主流浏览器上的稳定运行。 语言层面,JavaScript的动态类型和全局变量可能导致代码错误和难以调试的问题。...

    白帽子讲浏览器安全.钱文祥(带详细书签).pdf

    2.5.4 伪协议逻辑出错:某浏览器跨任意域脚本注入一例 42 2.6 本章小结 43 3 探索浏览器的导航过程 45 3.1 导航开始 45 3.1.1 浏览器的导航过程 46 3.1.2 DNS请求 46 3.1.3 DNS劫持和DNS污染 47 3.1.4 导航...

    JavaScript 获取计算机硬件信息

    在JavaScript中获取计算机硬件...总结,JavaScript获取计算机硬件信息的能力受到浏览器特性和安全策略的限制,而ActiveX和WMI是过去常用的一种方法,但随着技术的发展,这种方式逐渐被更安全、跨平台的解决方案所取代。

    JavaScript 复制功能代码 兼容多浏览器(ZeroClipboard)

    Zero Clipboard实现简单跨浏览器复制 var clip = new ZeroClipboard.Client(); // 新建一个对象 clip.setHandCursor( true ); // 设置鼠标为手型 clip.setText("哈哈"); // 设置要复制的文本。 // 注册一个 button,...

    javascript中日期函数new Date()的浏览器兼容性问题

    4. 对于跨浏览器开发,要进行充分的测试,确保在主流浏览器下均能正常工作。 5. 关注并跟进Web标准的更新,及时调整代码以适应新的规范和改进。 通过这些方法,我们可以减少在JavaScript开发中因new Date()函数的...

    网页上,泡泡常用代码

    这体现了早期Web开发中对跨浏览器兼容性的重视。现代Web开发中,虽然浏览器之间的差异已经大大减小,但仍然需要关注不同浏览器对新特性的支持情况。 ### 知识点四:数学计算在动画中的应用 代码中使用了三角函数...

    网页特效编程百例

    良好的编程实践包括合理使用事件委托、避免阻塞主线程、减少HTTP请求,以及使用适当的浏览器前缀来确保跨浏览器的兼容性。 总之,"网页特效编程百例"是一份宝贵的资源,它可以帮助开发者拓宽视野,提高编程技能,...

    JavaScript实时时钟代码(东)

    5. **跨浏览器兼容性**:确保代码能够在不同的浏览器环境下正常运行。 通过上述分析,我们可以看出这段JavaScript实时时钟代码不仅能够实现基本的时间显示功能,还具有一定的可扩展性和优化空间。希望本文的内容...

    JavaScript设置FieldSet展开与收缩

    JavaScript代码中没有使用任何非标准的属性或方法,这使得其跨浏览器兼容性得以提高。 4. HTML的FieldSet、legend和table元素的使用 文章中详细介绍了如何在HTML中使用FieldSet和legend元素,以及如何在FieldSet...

    jquery制作的飞行乌鸦

    虽然jQuery已经处理了许多跨浏览器的兼容性问题,但仍然需要注意某些高级特性的支持情况。同时,优化性能也很关键,避免过多的DOM操作和重绘,合理利用缓存,可以提高动画的流畅度。 总的来说,“jQuery制作的飞行...

    ocx打印pdf演示测试版.rar

    总之,"ocx打印pdf演示测试版.rar"提供了一种在HTML环境中利用OCX控件打印PDF的解决方案,它涉及了ActiveX技术、JavaScript编程以及跨浏览器兼容性问题。开发者可以通过这个测试版学习如何在网页中集成和控制OCX控件...

    基于jquery固定于顶部的导航响应浏览器滚动条事件

    跨浏览器兼容性指的是确保网页或Web应用在不同的浏览器环境下均能正常工作。由于不同浏览器对HTML、CSS和JavaScript的支持程度不一,开发者需要通过使用兼容性代码或polyfills等方法确保应用的兼容性。在本例中,...

    用層模擬視窗

    7. **跨浏览器兼容性**:由于不同的浏览器可能对某些CSS属性和JavaScript特性支持程度不同,需要确保代码在主流浏览器中都能正常工作,这可能需要借助像jQuery这样的库,或者使用Babel等工具将ES6+语法转换为广泛...

    js禁止document element对象选中文本实现代码.docx

    因此,在编写跨浏览器的代码时,需要考虑这些差异。 #### 3.2 兼容性解决方案 - **条件语句**:根据浏览器类型或版本进行判断并执行不同的代码路径。 - **框架和库**:使用如jQuery这样的库,它可以自动处理浏览器...

    js日期控件

    7. **浏览器兼容性**:需要注意的是,虽然JavaScript大多数功能在现代浏览器中都有良好的支持,但在早期版本或非主流浏览器中可能存在问题,因此在实际应用时需要考虑跨浏览器的兼容性。 总结来说,JS日期控件是...

    JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)

    在本文中,将详细介绍JavaScript/Js脚本如何处理HTML元素的自定义属性,并确保脚本在Fire...通过这个实例,可以更好地理解跨浏览器编程的复杂性和一些常用技巧,同时,对自定义属性在实际项目中的应用有了更深的认识。

    w3school最新离线手册(中文版)

    手册会提供相关的兼容性表格,帮助解决跨浏览器问题。 9. **版本控制**:Git是常用的版本控制系统,对于协同开发至关重要。手册可能会介绍基本的Git命令和工作流程。 10. **性能优化**:包括减少HTTP请求、压缩...

Global site tag (gtag.js) - Google Analytics