Javascript 如何使用addEventListener(WebKittTransitionEnd)延迟window.close()之前的时间?
我不是很精通JS,不知道如何将类似的答案应用到我的问题中,因此我将感谢您的帮助和建议Javascript 如何使用addEventListener(WebKittTransitionEnd)延迟window.close()之前的时间?,javascript,html,css,addeventlistener,webkit-animation,Javascript,Html,Css,Addeventlistener,Webkit Animation,我不是很精通JS,不知道如何将类似的答案应用到我的问题中,因此我将感谢您的帮助和建议 我在做什么: 我正在制作一个网络视图弹出窗口。它在底部有一个关闭按钮,我希望它的动画效果与应用程序中的按钮相同 我是怎么做的: 我现在只是用关闭它 我有一个webkit动画,在img.按钮:active模式下更改 我的问题: 我希望在窗口关闭之前完成转换。我知道我必须使用addEventListener检查转换何时结束,但我似乎无法使用window.close()正确执行此操作。有什么好办法吗 我一整天都在
我在做什么: 我正在制作一个网络视图弹出窗口。它在底部有一个关闭按钮,我希望它的动画效果与应用程序中的按钮相同 我是怎么做的: 我现在只是用
关闭它
我有一个webkit动画,在img.按钮:active
模式下更改
我的问题:
我希望在窗口关闭之前完成转换。我知道我必须使用addEventListener
检查转换何时结束,但我似乎无法使用window.close()
正确执行此操作。有什么好办法吗
我一整天都在阅读大量的文档,自己还没有弄明白这一点。实现这一点的最简单方法是,当用户单击锚定或图像时添加一个类,然后添加到给定的类上
函数关闭窗口(){
警报(“actice:transition-end,您现在可以调用window.close());
window.close();
}
功能锚定(e){
e、 预防默认值();
imgButton.classList.add(“活动”)
}
var clickAnchor=document.querySelector(#clickAnchor”),
imgButton=document.querySelector(“img.button”);
单击Anchor.addEventListener(“单击”,anchorActive,false);
imgButton.addEventListener(“transitionend”,closeWindow,false)代码>
img{
不透明度:1;
过渡:不透明度3秒轻松
}
img.active{opacity:.3}
您可以收听在元素img.按钮上触发的事件转换,该按钮表示CSS转换结束。但是,由于浏览器对transitionend
的支持是不完整的(尽管所有最新版本的Chrome、Firefox和Safari都支持transitionend
,本机没有供应商前缀),因此您应该找出实际支持的事件
关于标记,我强烈建议避免使用内联JS,而是设置一个事件侦听器
<a href="#" id="closeWindow"><img class="button" src="http://placehold.it/100x100" /></a>
// Determine which transntionend event is supported
function whichTransitionEvent() {
var t,
el = document.createElement("fakeelement");
var transitions = {
"transition" : "transitionend",
"OTransition" : "oTransitionEnd",
"MozTransition" : "transitionend",
"WebkitTransition": "webkitTransitionEnd"
}
for (t in transitions){
if (el.style[t] !== undefined){
return transitions[t];
}
}
}
var customTransitionEnd = whichTransitionEvent();
// Get button
var btns = document.querySelectorAll('img.btn:active'),
i;
for (i = 0; i < btns.length; ++i) {
btns[i].addEventListener(customTransitionEnd, function(e) {
e.preventDefault();
alert('Transition End');
// window.close();
});
}