跨浏览器开发经验总结(三)   警惕“IE依赖综合症”

 更新时间:2010年05月13日 19:30:33   作者:  
跨浏览器开发经验总结(三) 警惕“IE依赖综合症”
DHTML
DHTML是个好东西,大大方面了前端的交互实现,使得获取页面元素以及动态修改页面元素变的简单无比。但是所有的浏览器都认识这些语法吗?
document.all
document.all不是所有浏览器都能识别,要写出更通用的代码,最好还是通过id来得到,使用document.getElementById(…)
element.outerText, element.innerText, element.outerHTML,element.innerHTML
element.outerText, element.innerText, element.outerHTML是属于IE特有的, 而element.innerHTML是通用的。
如果要在其他浏览器下使用不通用的属性,可以参考以下代码实现:
复制代码 代码如下:

if(!isIE()){
HTMLElement.prototype.__defineGetter__("innerText",
function(){
var anyString = "";
var childS = this.childNodes;
for(var i=0; i<childS.length; i++){
if(childS[i].nodeType==1)
anyString += childS[i].innerText;
else if(childS[i].nodeType==3)
anyString += ahildS[i].nodeValue;
}
return anyString;
}
);
HTMLElement.prototype.__defineSetter__("innerText",
function(sText){
this.textContent=sText;
}
);
}

document.forms.actionForm.inputName.value
之前用document.all.title.value来获取名为actionForm的标单中名为title的input域值得地方,应该改为document.forms.actionForm.input.value,要这么使用,首先要保证HTML中form标签与其他标签结构上有完整的闭合关系。
Table操作
moveRow ( iSource , iTarget )方法
oRow = tableObject.moveRow ( iSource , iTarget ),这个方法可以很方便实现table中tr的动态顺序调整。但是这个方法是IE内核自己实现的,不是DOM标准方法,所以别的浏览器没有。在使用到了这些IE独有的方法的地方,要么换用标准的DOM节点操纵方式——insertBefore(currobj, beforeObj.nextSibling),要么先在HTMLDocument类的prototype上自己实现一个 moveRow方法:
复制代码 代码如下:

function getTRArray(){
……
//将需要操纵的tr都放入数组作为该方法的返回值
}

function getTRByIndex(sourceELIndex){
var trArray = getTRArray();
var result = trArray[sourceELIndex];
return result;
}

if( !isIE && HTMLElement.moveRow == null )
{
//入参说明:
//sourceELIndex :需要移动的tr在tbody中的第几行(>=1)
//targetELIndex :需要移动到tbody中的第几行(>=1,<=行数)
HTMLElement.prototype.moveRow = function(sourceELIndex,targetELIndex)
{
var tbObject = document.getElementById("tbodyEL");
var resultEL;

if(sourceELIndex>=targetELIndex)
{//move up
var s = sourceELIndex-1;
var t = targetELIndex-1;
}else{
var s = sourceELIndex-1;
var t = targetELIndex;
}
var sourceEL = getTRByIndex(s);
var targetEL = getTRByIndex(t);
//alert("begin"+sourceELIndex+targetELIndex);
//alert("begin"+s+t);
tbObject.insertBefore(sourceEL,targetEL);
resultEL = sourceEL;
return resultEL;
}
}

相关文章

  • JavaScript监听手机物理返回键的两种解决方法

    JavaScript监听手机物理返回键的两种解决方法

    JavaScript没有监听物理返回键的API,所以只能使用 popstate 事件监听。接下来通过本文给大家分享JavaScript监听手机物理返回键的两种解决方法,感兴趣的朋友一起看看吧
    2017-08-08
  • NestJS使用class-validator进行数据验证

    NestJS使用class-validator进行数据验证

    本文将通过详细的步骤和实战技巧,带大家掌握如何在NestJS中使用class-validator进行数据验证,以及11条实战中常用的验证技巧,感兴趣的可以了解下
    2024-11-11
  • Bootstrap插件全集

    Bootstrap插件全集

    这篇文章主要为大家详细介绍了Bootstrap插件,包括Bootstrap过渡效果插件、Bootstrap下拉菜单插件等,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 微信小程序错误this.setData报错及解决过程

    微信小程序错误this.setData报错及解决过程

    这篇文章主要介绍了微信小程序错误this.setData报错及解决过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • js 与或运算符 || && 妙用

    js 与或运算符 || && 妙用

    js 与或运算符 || && 妙用,可用于精简代码,降低程序的可读性。
    2009-12-12
  • js加减乘除丢失精度问题解决方法

    js加减乘除丢失精度问题解决方法

    在javascript中,带小数的数据运算时总会出现好多位小数.这是因为在javascript中浮点数的计算是以2进制计算的
    2014-05-05
  • JavaScript判断微信浏览器实例代码

    JavaScript判断微信浏览器实例代码

    本文给大家介绍如何判断用户是否是用微信浏览器的实例代码,根据关键字 MicroMessenger 来判断是否是微信内置的浏览器,感兴趣的朋友可以参考下实现代码
    2016-06-06
  • js仿手机页面文件下拉刷新效果

    js仿手机页面文件下拉刷新效果

    这篇文章主要为大家详细介绍了js仿手机页面文件的下拉刷新,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • js比较日期大小的方法

    js比较日期大小的方法

    这篇文章主要介绍了js比较日期大小的方法,涉及javascript日期的转化、匹配、比较等常用操作技巧,需要的朋友可以参考下
    2015-05-05
  • jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】

    jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】

    这篇文章主要介绍了jQuery animate()实现背景色渐变效果的处理方法,结合实例形式分析了jQuery颜色插件jquery.color.js实现背景色渐变的简单操作技巧,需要的朋友可以参考下
    2017-03-03

最新评论