innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别


Posted in Javascript onJune 29, 2007

innerText 属性在 IE 浏览器中可以得到当前元素过滤掉 HTML Tags 之后的文本内容,在某些时候还是比较有用。但类似的非标准属性/方法在其他浏览器中并不一定都得到支持。
类似的像 insertAdjacentElement , insertAdjacentElement , insertAdjacentHTML , insertAdjacentText 等。如果需要使用这些非标准的方法,或者已有的代码大量使用了这些方法的话,就必须为其他浏览器提供对应的 prototype 定义。比如:

var isMinNS5 = (navigator.appName.indexOf("Netscape") >= 0 &&
               parseFloat(navigator.appVersion) >= 5) ? 1 : 0;

if (isMinNS5){
 HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode){
   switch (where){
   case ’beforeBegin’:
     this.parentNode.insertBefore(parsedNode,this)
     break;
   case ’afterBegin’:
     this.insertBefore(parsedNode,this.firstChild);
     break;
   case ’beforeEnd’:
     this.appendChild(parsedNode);
     break;
   case ’afterEnd’:
     if(this.nextSibling){
       this.parentNode.insertBefore(parsedNode,this.nextSibling);
     }
     else{
       this.parentNode.appendChild(parsedNode)
     }
   break;
   }
 }
 HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr){
   var r = this.ownerDocument.createRange();
   r.setStartBefore(this);
   var parsedHTML = r.createContextualFragment(htmlStr);
   this.appendChild(parsedHTML)
 }
 HTMLElement.prototype.insertAdjacentText = function(where,txtStr){
   var parsedText = document.createTextNode(txtStr)
   this.insertAdjacentElement(where,parsedText)
 }
 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].tagName=="BR" ? ’\n’ : childS[i].innerText;
       else if(childS[i].nodeType==3)
         anyString += childS[i].nodeValue;
     }

     return anyString;
   }
 );
}

Javascript 相关文章推荐
javascript之通用简单的table选项卡实现(二)
May 09 Javascript
基于Jquery的开发个代阴影的对话框效果代码
Jul 28 Javascript
js实现的折叠导航示例
Nov 29 Javascript
node.js中的path.delimiter方法使用说明
Dec 09 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
Sep 18 Javascript
详解Angularjs filter过滤器
Feb 06 Javascript
js中判断变量类型函数typeof的用法总结
Aug 09 Javascript
Angularjs之filter过滤器(推荐)
Nov 27 Javascript
Vue实例简单方法介绍
Jan 20 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
Jun 12 jQuery
JavaScript实现随机点名器
Mar 25 Javascript
详解JavaScript之Array.reduce源码解读
Nov 01 Javascript
javascript之函数直接量(function(){})()
Jun 29 #Javascript
javascript延时重复执行函数 lLoopRun.js
Jun 29 #Javascript
JavaScript 编程引入命名空间的方法
Jun 29 #Javascript
你需要知道的JavsScript可以做什么?
Jun 29 #Javascript
ECMAScript 基础知识
Jun 29 #Javascript
javascript中的几个运算符
Jun 29 #Javascript
一个加载js文件的小脚本
Jun 28 #Javascript
You might like
PHP字符串的连接的简单实例
2013/12/30 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
Yii2框架BootStrap样式的深入理解
2016/11/07 PHP
详解php curl带有csrf-token验证模拟提交方法
2018/04/18 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
js wmp操作代码小结(音乐连播功能)
2008/11/08 Javascript
理解 JavaScript 预解析
2009/10/25 Javascript
jQuery判断元素是否是隐藏的代码
2011/04/24 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
2019/08/27 jQuery
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
个性化皮包、小袋、生活配件:Mon Purse
2019/03/26 全球购物
linux面试题参考答案(5)
2016/11/05 面试题
长青弘远的面试题
2012/06/09 面试题
《母亲的恩情》教学反思
2014/02/13 职场文书
文案策划求职信
2014/03/18 职场文书
协议书的格式
2014/04/23 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
利用Java连接Hadoop进行编程
2022/06/28 Java/Android