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 相关文章推荐
jQuery 1.2.x 升? 1.3.x 注意事项
May 06 Javascript
基于Jquery的标签智能验证实现代码
Dec 27 Javascript
js触发asp.net的Button的Onclick事件应用
Feb 02 Javascript
js实现同一个页面多个渐变效果的方法
Apr 10 Javascript
Javascript实现div层渐隐效果的方法
May 30 Javascript
JS实现搜索框文字可删除功能
Dec 28 Javascript
JavaScript 总结几个提高性能知识点(推荐)
Feb 20 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
Sep 12 Javascript
bootstrap Table的一些小操作
Nov 01 Javascript
Nuxt.js实战详解
Jan 18 Javascript
vue-cli配置全局sass、less变量的方法
Jun 06 Javascript
JS数组转字符串实现方法解析
Sep 04 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
ThinkPHP的L方法使用简介
2014/06/18 PHP
Laravel框架中扩展函数、扩展自定义类的方法
2014/09/04 PHP
php用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
基于jquery实现全屏滚动效果
2015/11/26 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
JS输出空格的简单实现方法
2016/09/08 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
JS检测数组类型的方法小结
2017/03/14 Javascript
对于input 框限定输入值为浮点型的js代码
2017/09/25 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
JQuery基于FormData异步提交数据文件
2020/09/01 jQuery
WebStorm无法正确识别Vue3组合式API的解决方案
2021/02/18 Vue.js
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
python实现的简单RPG游戏流程实例
2015/06/28 Python
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
基于python 字符编码的理解
2017/09/02 Python
python使用turtle库绘制树
2018/06/25 Python
Flask入门之上传文件到服务器的方法示例
2018/07/18 Python
python实现彩票系统
2020/06/28 Python
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
Python递归调用实现数字累加的代码
2020/02/25 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
斐乐美国官方网站:FILA美国
2019/03/01 全球购物
财务出纳员岗位职责
2013/11/26 职场文书
欠款起诉书范文
2015/05/19 职场文书
文艺演出主持词
2015/07/01 职场文书
事业单位岗位说明书
2015/10/08 职场文书
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL