`

getVendorPrefixedEventName

 
阅读更多

getVendorPrefixedEventName用于获取当前浏览器下anmation、transition类事件名。

 

'use strict';

// ExecutionEnvironment.canUseDOM用于判断平台是否可以操作dom节点
var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');

// 获取不同浏览器下animationend、animationiteration、animationstart、transitionend类事件的名称
function makePrefixMap(styleProp, eventName) {
  var prefixes = {};

  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();
  prefixes['Webkit' + styleProp] = 'webkit' + eventName;
  prefixes['Moz' + styleProp] = 'moz' + eventName;
  prefixes['ms' + styleProp] = 'MS' + eventName;
  prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();

  return prefixes;
}

// 对象形式缓存animationend、animationiteration、animationstart、transitionend事件名,内含不同浏览器下的不同事件名
// 通过for...in语句,加document.createElement('div').style,选取当前浏览器下的事件名
var vendorPrefixes = {
  animationend: makePrefixMap('Animation', 'AnimationEnd'),
  animationiteration: makePrefixMap('Animation', 'AnimationIteration'),
  animationstart: makePrefixMap('Animation', 'AnimationStart'),
  transitionend: makePrefixMap('Transition', 'TransitionEnd')
};

// 缓存当前浏览器的animationend、animationiteration、animationstart、transitionend事件名
var prefixedEventNames = {};

// 缓存当前浏览器支持的样式
var style = {};

if (ExecutionEnvironment.canUseDOM) {
  style = document.createElement('div').style;

  // Android 4.x使用无前缀的animation、transition样式,但是事件名却使用带前缀的样式
  if (!('AnimationEvent' in window)) {
    delete vendorPrefixes.animationend.animation;
    delete vendorPrefixes.animationiteration.animation;
    delete vendorPrefixes.animationstart.animation;
  }

  if (!('TransitionEvent' in window)) {
    delete vendorPrefixes.transitionend.transition;
  }
}

// 获取当前浏览器支持的animationend、animationiteration、animationstart、transitionend事件名
function getVendorPrefixedEventName(eventName) {
  if (prefixedEventNames[eventName]) {
    return prefixedEventNames[eventName];

  // eventName不是animationend、animationiteration、animationstart、transitionend,直接返回
  } else if (!vendorPrefixes[eventName]) {
    return eventName;
  }

  // prefixMap为对象形式,不同浏览器下的同类事件名
  var prefixMap = vendorPrefixes[eventName];

  // 获取当前浏览器支持的事件名,并作缓存
  for (var styleProp in prefixMap) {
    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {
      return prefixedEventNames[eventName] = prefixMap[styleProp];
    }
  }

  return '';
}

module.exports = getVendorPrefixedEventName;

 

0
0
分享到:
评论

相关推荐

    基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本116.0.5808.0)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom116.0.5808.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver116.0.5808.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

    2024消费趋势报告.pdf

    2024消费趋势报告.pdf

    PCB的电磁兼容设计+电子设计领域

    1、EMC由EMI和EMS组成 2、EMS常见的整改措施 3、干扰=共模干扰+差模干扰 4、元器件的摆放 5、缝隙影响

    给排水施工图全套.xdw.pdf

    给排水施工图全套.xdw

    基于微信小程序的旅游出行必备(后端接口ssm框架实现)-毕设项目

    毕业设计基于微信小程序的旅游出行必备(后端接口ssm框架实现)-毕设项目.zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 项目介绍: 旅游出行必备项目, 前端为微信小程序,后端接口为ssm框架实现,项目包含源码、数据库毕业设计基于微信小程序的旅游出行必备(后端接口ssm框架实现)-毕设项目.zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 项目主要功能: 该项目是一个基于微信小程序的旅游出行应用,结合后端SSM(Spring MVC + Spring + MyBatis)框架提供服务。主要功能包括行程规划、景点信息查询、在线预订等,旨在为用户提供便捷的旅游出行体验。特点在于利用微信小程序的便捷性,实现即用即走,同时通过后端强大的数据处理能力保证服务稳定性。技术栈涵盖微信小程序开发、Java SSM框架、数据库管理等,适合学习和作为毕业设计参考。

    MC/00000000000000000000000000

    Want to play MC but do not want to buy can download to have a look。 It's very interested ------------------------------------------------------------------------------------------------- ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

    2024嵌入式面试资料SPI子系统

    2024嵌入式面试资料SPI子系统提取方式是百度网盘分享地址

    电子迎宾器和声光控照明开关multsim仿真和课设报告

    设计报告 ——题目名称:电子迎宾器 ——题目名称: 声光控照明开关

    基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本115.0.5789.0)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom115.0.5789.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver115.0.5789.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

    基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本115.0.5785.0)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom115.0.5785.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver115.0.5785.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

    navicat下载、安装、配置.zip

    【navicat】下载、安装、配置

    2024嵌入式大厂面经东华软件2015年应届实习生毕业生招聘职位-公司

    2024嵌入式大厂面经东华软件2015年应届实习生毕业生招聘职位-公司提取方式是百度网盘分享地址

    C++ 高性能爬虫代码,带UI

    C++ 高性能爬虫代码,带UI

    2024年铁基非晶合金行业分析报告.pptx

    行业报告

    2024嵌入式大厂面经朝歌宽带笔试题

    2024嵌入式大厂面经朝歌宽带笔试题提取方式是百度网盘分享地址

    AutoRuns 查看设置开机自动加载程序、病毒木马及恶意插件程序等

    Autoruns for Windows 是 Mark Russinovich 和 Bryce Cogswell 开发的一款软件,它能用于显示在 Windows启动或登录时自动运行的程序,并且允许用户有选择地禁用或删除它们,例如那些在“启动”文件夹和注册表相关键中的程序。此外,Autoruns还可以修改包括:Windows 资源管理器的 Shell 扩展(如右键弹出菜单)、IE浏览器插件(如工具栏扩展)、系统服务和设备驱动程序、计划任务等多种不同的自启动程序。 Autoruns作为Sysinternals Suite(故障诊断工具套装)的一部分,可运行于 Windows XP、Windows Server 2003 和更高版本的 Windows 操作系统。该软件还包括一个相同功能的命令行版本Autorunsc,可以把结果报表以 CSV 格式输出。

    2024年市场展望与薪酬报告发布-randstad.pdf

    2024年市场展望与薪酬报告发布-randstad.pdf

    AIGC 之 AI 绘画:技术与应用双突破,生产力变革在即

    AIGC 之 AI 绘画:技术与应用双突破,生产力变革在即

    智能车竞赛介绍.docx

    智能车竞赛介绍.docx

    Android开发基本知识总结,Android课件pdf

    1.什么是Android? 移动设备(常常指手机mobile)的操作系统,由google公司出品,是免费的,最早是基于Linux平台的:目前已经推出的Android3.0是平板电脑上的操作系统。 其它的手机操作系统有:iPhone系统等。 手机厂商三星(Samsung,宏达电(HTC),摩托罗拉(Motorola),华硕,索尼,Garmin等都支持iPhone系统。 Android系统功能自定义用户界面,支持蓝牙,多点触摸,具有导航功能和语音识别功能结合了google 地图。Android 软件开发工具SDK4.0 Android系统特点:虚拟键盘,以WebKit为核心的WebView组件,可以使用HTML,javascript 等。

Global site tag (gtag.js) - Google Analytics