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 相关文章推荐
任意位置显示html菜单
Feb 01 Javascript
javascript中的array数组使用技巧
Jan 31 Javascript
更优雅的事件触发兼容
Oct 24 Javascript
JavaScript实现拼音排序的方法
Nov 20 Javascript
JS获取计算机mac地址以及IP的实现方法
Jan 08 Javascript
jQuery入门介绍之基础知识
Jan 13 Javascript
JS仿淘宝实现的简单滑动门效果代码
Oct 14 Javascript
javascript瀑布流布局实现方法详解
Feb 17 Javascript
无限循环轮播图之运动框架(原生JS实现)
Oct 01 Javascript
基于JSONP原理解析(推荐)
Dec 04 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
Dec 21 Javascript
JavaScript实现图片懒加载的方法分析
Jul 05 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
日本十大惊悚动漫
2020/03/04 日漫
php的SimpleXML方法读写XML接口文件实例解析
2014/06/16 PHP
php邮件发送的两种方式
2020/04/28 PHP
golang与PHP输出excel示例
2016/07/22 PHP
动态添加option及createElement使用示例
2014/01/26 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
2017/04/22 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
Python实现远程调用MetaSploit的方法
2014/08/22 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
2016/05/25 Python
pyttsx3实现中文文字转语音的方法
2018/12/24 Python
django之对FileField字段的upload_to的设定方法
2019/07/28 Python
python如何将两个txt文件内容合并
2019/10/18 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
python利用opencv保存、播放视频
2020/11/02 Python
用python读取xlsx文件
2020/12/17 Python
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
师范生实习个人的自我评价
2013/09/28 职场文书
品质主管的岗位职责
2013/12/04 职场文书
军训生自我鉴定范文
2013/12/27 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
白血病捐款倡议书
2014/05/14 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书