javascript - ontransitionend 不触发/附加但 addEventListener 有效
问题描述
这是一个简化的测试用例:
var div = document.createElement('div');
div.classList.add('test');
document.body.appendChild(div);
window.setTimeout(
function() {
div.style.boxShadow = '0 0 100px blue';
div.ontransitionend = function() {
console.log('transition end');
};
div.onclick = function() {
console.log('click');
};
}, 100);
div.test {
width: 100px;
height: 100px;
background: red;
box-shadow: none;
transition: box-shadow 1s;
}
单击 div 会正确触发onclick
消息,但过渡结束不会触发“过渡结束”消息。将事件处理程序更改为此使其工作:
div.addEventListener('transitionend', function() { console.log('transition end'); } );
为什么 inline 和 之间的区别addEventListener
?
根据MDN,ontransitionend
应该可以像我写的那样工作,并且四处搜索,Chrome 确实支持它不带前缀(事实上我记得以前使用它没有问题)。值得注意的是,该 MDN 页面上显示的示例在 Chrome 中对我不起作用(不显示“缩放”和“完成”文本)。
解决方案
显然答案是 Chrome 出于某种原因不支持ontransitionend
或其他几个转换事件,即使我可以发誓我以前使用过它们......
Firefox 正确运行我的测试用例和 MDN 的测试用例。
推荐阅读
- android - 如何改善 Xamarin Forms 中缓慢的应用程序启动?
- google-app-engine - 将文件从 url 发送到 GCS
- maven - 通过 Jenkins 运行 Maven 项目时出错
- android - volly类android中的请求超时
- ubuntu - 如何在ubuntu的后台解压.bz2文件
- java - 在 javafx tableview 中取消编辑
- r - 查找在多个测试中表示的组
- java - 显示包含具有私有字段的另一个类的对象的 ArrayList 的内容
- java - 应用在后台时悄悄切换 Activity
- java - 使用 Integer.parseInt 将字符串输入从 JTextField 转换为整数,但仍收到错误消息