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 相关文章推荐
js url传值中文乱码之解决之道
Nov 20 Javascript
利用jQuery操作对象数组的实现代码
Apr 27 Javascript
Javascript变量函数浅析
Sep 02 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
Sep 17 Javascript
利用webqq协议使用python登录qq发消息源码参考
Apr 08 Javascript
禁止IE用右键的JS代码
Dec 30 Javascript
利用Javascript仿Excel的数据透视分析功能
Sep 07 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
Dec 28 Javascript
Vue 单文件中的数据传递示例
Mar 21 Javascript
对vue事件的延迟执行实例讲解
Aug 28 Javascript
React+TypeScript+webpack4多入口配置详解
Aug 08 Javascript
vue 全局环境切换问题
Oct 27 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/06/13 PHP
PHP内核探索:变量概述
2014/01/30 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
JavaScript修改css样式style
2008/04/15 Javascript
JavaScript Title、alt提示(Tips)实现源码解读
2010/12/12 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
javascript的解析执行顺序在各个浏览器中的不同
2014/03/17 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
javascript实现连续赋值
2015/08/10 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
微信小程序 教程之引用
2016/10/18 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
python实现机器学习之多元线性回归
2018/09/06 Python
对python中的装包与解包实例详解
2019/08/24 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
瑜伽国际:Yoga International
2018/04/18 全球购物
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
婚前协议书范本
2014/04/15 职场文书
二年级评语大全
2014/04/23 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
迟到检讨书
2015/01/26 职场文书
欠条范文
2015/07/03 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
Python数据分析入门之数据读取与存储
2021/05/13 Python
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs