如何确定javascript已经完成了某些操作.ios上的
How to determin that javascript has finished doing something
JS相当慢。例如,在这段代码中,Js在能够添加块样式之前添加了类。这打断了我在页面上的一个动画。
comments.style.display="block";comments.className = "show";
我有一个解决办法,可以解决ios上的问题,但感觉不对:
comments.style.display="block";setTimeout(function(){comments.className = "show";},1)
是否有任何方法可以确定块样式是否已设置,然后才触发第二部分?
谢谢你的建议!
难道不能只使用if吗?
<div id="foo" style="display: none;">foo</div>
var div = document.getElementById( "foo" );
if ( div.style.display == "none" ) {
div.style.display = "block";
}
如果你想收听一个类更改(或风格更改)"事件",你可以尝试以下链接:
- 使用Jquery<=更改css属性时检测事件这解决了没有jQuery的问题
- jQuery-如果CSS类更改则引发事件
- 在CSS更改时使用Jquery触发事件
- 有可能听一个";风格改变";事件
我认为第一个会解决你的问题。这是代码:
document.documentElement.addEventListener( "DOMAttrModified", function( evt ){
if ( evt.attrName === "style" ) {
if ( evt.newValue.indexOf( "block" ) != -1 ) {
alert( "do something!" );
}
}
}, false );
document.getElementById( "foo" ).style.display = "block";
这是一个可能奏效的糟糕破解:
comments.blockStyleEvent = function() {
if ( this.style.display === "block" ) {
this.onBlockStyleEvent.apply(this);
}
};
comments.onBlockStyleEvent = function() {
this.className = "show";
};
setInterval(function(){
comments.blockStyleEvent();
}, 1);
您还可以创建两个css类,一个是show
,另一个是showAsBlock
,例如,然后您可以这样做:
// somewhere else
comments.className = "hide";
// ...then
comments.className = "showAsBlock";
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 如何确定javascript已经完成了某些操作.ios上的
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 从JavaScript访问struts操作中的属性
- 压缩phonegap中ios的图像插件
- fluxxor向一个flux实例添加一组以上的操作
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- 如何在iOS应用程序中从Firebase中删除超过6小时的数据
- 操作放置在画布上的元素之间的连接
- 使用“+="操作人员
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- Jquery未定义函数正在停止其他操作
- 有没有一种方法可以检测ios<>使用jquery和触发器操作形成导航按钮
- 如何在ios上将按钮操作捕获到javascript中
- 在 Titanium 中添加适用于 iOS 的操作栏
- 通过触摸操作图像:IOS
- 如何在IOS操作应用程序扩展中调试JavaScript
- 防止iOS 5.1上打开键盘的默认操作