今天在完成前端的简单练习时发现了一些兼容性的问题,百度后得以解决.

这里主要讨论Firefox与Chrome的兼容性问题.

textContent与 innerText

在javascript中, 为了获取节点的文本, 我们可以考虑使用节点的textContent、或者innerText,

然而,两者都并不能很好对所有浏览器进行兼容.

  • textContent: 不支持低版本 IE; 兼容 Chrome / Firefox / Safari / Opera / IE9.
  • innerText: 不支持Firefox; 兼容其他浏览器;

为了保证兼容性, 可以通过自定义的函数来解决;从另一位博主中找到了可借鉴的代码:

var div = document.getElementById("content");
function getInnerText(element) {
return (typeof element.textContent == "string") ? element.textContent : element.innerText;
}
function setInnerText(element, text) {
if (typeof element.textContent == "string") {
element.textContent = text;
} else {
element.innerText = text;
}
}
setInnerText(div, "Hello world!");
alert(getInnerText(div)); //"Hello world!"

相关文档: MDN textContent;

event的兼容性问题

开发过程中,我们会给节点添加事件监听器,例如:

element.addEventListener("click", HandleClick);

function HandleClick() {
console.log(event.target);
}

为了在HandleClick()函数中获取到触发该函数的对象,我们可能会用到event.target, 这段代码可以在Chrome上正常运行,但在Firefox中出现报错,

控制台将显示不存在event对象.

说明: Firefox的event只能在事件发生的现场使用(来自百度).

解决方法:

1.我们可以通过修改html标签, 传递event参数给相应的函数:

<button onclick = "HandleClick(event)">

这样便获取了event, 接下来就可以在HandleClick()函数中愉快地使用event了;(当然,event的某些属性兼容性也需要另外考虑)

2.不传递event对象, 直接在 HandleClick()函数中获取;

代码来自另一位博主:

unction HandleClick()
{
var evt = window.event || arguments.callee.caller.arguments[0]; // 获取event对象
var src = evt.srcElement || evt.target; // 获取触发事件的源对象
var iKeyCode = evt.keyCode || evt.which; //获取按钮代码
alert(src.value); // 打印该对象的value属性
if (window.navigator.userAgent.indexOf("IE")>=1){
evt.keyCode =0;
evt.returnValue=false;
}else{
evt.preventDefault();
}
}

此时我们的html文件中不需要传递event给HandleClick函数, 如下:

<button onclick = "HandleClick()"


参考:

textContent、innerText 以及Event事件兼容性问题的更多相关文章

  1. javascript event事件兼容性处理

    ie 6-8支持event事件,ff浏览器不支持 获取鼠标点击位置的坐标 document.onclick = function(){ alert(event.clientX +"-&quo ...

  2. 简单总结焦点事件、Event事件对象、冒泡事件

    每学习一些新的东西,要学会复习,总结和记录. 今天来简单总结一下学到的几个事件:焦点事件.Event事件对象.冒泡事件 其实这几个事件应该往深的说是挺难的,但今天主要是以一个小菜的角度去尝试理解一些基 ...

  3. 节点操作,节点属性的操作及DOM event事件

    ##1. 节点操作 createElement(标签名) 创建一个指定名称的元素 someone.appendChild(new_node) 追加一个子节点(作为最后的子节点) someone.ins ...

  4. 【js】event(事件对象)详解

    1.事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 什么时候会产生Event 对象呢? 例如: 当用户单击某个元素的时候,我们给这个元 ...

  5. JavaScript 事件兼容性写法

    1.以下是JavaScript事件兼容性写法,使用者可以随意使用,兼容所有浏览器.包括IE6(亲测) <!DOCTYPE html> <html> <head> & ...

  6. event——事件对象详解

    PS:转自https://www.cnblogs.com/songyaqi/p/5204143.html 1. 事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标 ...

  7. JavaScript——event事件详解

    1.事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 什么时候会产生Event 对象呢? 例如: 当用户单击某个元素的时候,我们给这个元 ...

  8. javascript的自定义对象/取消事件/事件兼容性/取消冒泡

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. [.NET] C# 知识回顾 - Event 事件

    C# 知识回顾 - Event 事件 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6060297.html 序 昨天,通过<C# 知识回顾 - ...

随机推荐

  1. 《招聘一个靠谱的iOS》面试题参考答案(上)

    说明:面试题来源是微博@我就叫Sunny怎么了的这篇博文:<招聘一个靠谱的 iOS>,其中共55题,除第一题为纠错题外,其他54道均为简答题. 博文中给出了高质量的面试题,但是未给出答案, ...

  2. ARC 工作原理

    自动引用计数(Automatic Reference Counting),是一个编译期间工作的能够帮你管理内存的技术. ARC在编译期间为每个Objective-C指针变量添加合适的retain, r ...

  3. kafka与Spring的集成

    准备工作 kafka版本:kafka_2.10-0.10.1.0 spring版本:spring4.3 配置文件 pom文件配置(也可以直接下载jar包) Kafka和spring集成的支持类库,sp ...

  4. java框架BeanUtils及路径问题练习

    内省----->一个变态的反射    BeanUtils主要解决 的问题: 把对象的属性数据封装 到对象中.  使从文件中读取的数据往对象中赋值更加简单:   BeanUtils的好处:  1. ...

  5. [Protractor] Protractor Interactive with elementor

    Install: npm install -g elementor Then run: webdriver-manager start Lets say if we want to test 'htt ...

  6. 关于mybatis插入数据库返回主键id

    关于Sequence主键的数据库来说,如: <insert id="add" parameterType="vo.Category"> <se ...

  7. CentOS6.5 --安装orale 11g(上)

    Linux内核版本:Linux version 2.6.32-431.23.3.el6.x86_64 (1)     在Windows上安装Xmanager Enterprise 4工具,该工具是用来 ...

  8. javascript 阻止多次点击造成的轮播混乱

    function nextSlider(){ //使用b作为开关,只有动画完成后才能进行下一次运动 if(b){ //如果b为真,则马上设置b为false,如果startmove的回调没有重新设置b的 ...

  9. OpenCV——视频颜色识别

    #include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace c ...

  10. (转)ubuntu下如何查看软件安装目录以及安装版本

    1.查询版本 aptitude show 软件名 例如:aptitude show kde-runtime 显示如下: ****@ubuntu:~$ aptitude show kde-runtime ...