0

iOSのJSはかなり遅いです。たとえば、このコードでは、Jsはブロックスタイルを追加する前にクラスを追加します。これは私がページ上に持っているアニメーションを壊します。

comments.style.display="block";comments.className = "show";

iOSの問題を修正する回避策がありますが、気分が悪いだけです。

comments.style.display="block";setTimeout(function(){comments.className = "show";},1)

ブロックスタイルが設定されているかどうかを判断して、2番目の部分をトリガーする方法はありますか?

あなたの提案をありがとう!

4

2 に答える 2

1

ifだけでは使えませんか?

<div id="foo" style="display: none;">foo</div>

var div = document.getElementById( "foo"  );
if ( div.style.display == "none" ) {
    div.style.display = "block";
}

クラスの変更(またはスタイルの変更)の「イベント」を聞きたい場合は、次のリンクを試すことができます。

私は最初のものがあなたの問題を解決すると思います。コードは次のとおりです。

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";
于 2012-09-15T04:32:00.000 に答える
1

これは、うまくいくかもしれないハックの素晴らしい混乱です:

comments.blockStyleEvent = function() {
   if ( this.style.display === "block" ) {
      this.onBlockStyleEvent.apply(this);
   }
};

comments.onBlockStyleEvent = function() {
   this.className = "show";
};

setInterval(function(){
  comments.blockStyleEvent();
}, 1);

showたとえば、2つのcssクラスを作成showAsBlockして、次のようにすることもできます。

// somewhere else
comments.className = "hide";

// ...then
comments.className = "showAsBlock";
于 2012-09-15T04:45:36.183 に答える