Angular.js: IE11でng-hideずng-showが短時間同時に衚瀺される

䜜成日 2016幎02月12日  Â·  45コメント  Â·  ゜ヌス: angular/angular.js

ng-animateを含めるず、アニメヌションを䜿甚しなくおも、ng-show芁玠ずng-hide芁玠が同時に衚瀺される時間が短いように芋えたす。

䟋問題はIE11を䜿甚しおいる堎合にのみ衚瀺されたす
http://plnkr.co/edit/vqVGcf9cjFQPAbq0Igyq?p=preview

この䟋では、ng-show / ng-hideをトリガヌするチェックボックスをオンたたはオフにするず、2぀の芁玠のちら぀きが同時に衚瀺されたす。

Known Issue ngAnimate moderate broken expected use bug

最も参考になるコメント

私は珟圚、問題を回避するためにこのcssを適甚しおいたす
.ng-hide.ng-hide-animate {
衚瀺なし重芁;
}

もちろん、䞀郚のng-hideをアニメヌション化し、䞀郚をアニメヌション化しない堎合、これは将来的に問題を匕き起こす可胜性がありたす。

党おのコメント45件

これはおなじみのようです。 問題は、IE11でこれらを確実に再珟できないこずです。 それは私にずっおおそらく30回に1回起こっおいたす。 Firefoxでも䞀床芋たこずがあるので、ブラりザがrequestAnimationFrameキュヌをフラッシュする速床、たたはアニメヌションが蚱可されおいるかどうかを怜出するのにかかる時間に関係しおいる可胜性がありたす。

最新のスナップショット http://code.angularjs.org/snapshot/angular-animate.jsでテストしお、発生頻床が䜎いかどうかを確認しおください。

IE11では、チェックボックスをクリックするたびに䞡方のフラッシュが衚瀺されたす。 リンクされたangular-animateを䜿甚しおも、この動䜜は倉わらないようです。

それは倉だ。 IEずOSのバヌゞョンは䜕ですか そしお、あなたのコンピュヌタは䞀般的に遅いですか、それずも負荷がかかっおいたすか

私たちはかなりハむ゚ンドのコンピュヌタヌを持っおいたす私はそれらのうちの3぀を詊したした、私の最初の掚枬は実際にはそれが短時間しか芋えない䜕かを衚瀺するのに十分速いずいうこずでした。 IEバヌゞョン11.0.9600.18202でWindows8.1を実行しおいたす。 私が詊したコンピュヌタヌの1぀はWindows7で、同じ問題が発生したした。

私は珟圚、問題を回避するためにこのcssを適甚しおいたす
.ng-hide.ng-hide-animate {
衚瀺なし重芁;
}

もちろん、䞀郚のng-hideをアニメヌション化し、䞀郚をアニメヌション化しない堎合、これは将来的に問題を匕き起こす可胜性がありたす。

うヌん、私はコンピュヌタヌが速すぎるずは思っおいたせんでした。 それかもしれたせん。 IE11の少し新しいバヌゞョン11.0.9600.18204もありたすが、これが理由ではないかず思いたす。

私は今、仮想Windows 7のIE11でこれを詊したしたが、おそらく2〜10回の詊行ごずに1回問題が発生したす。 これは、仮想マシンの実行速床が遅いこずが原因である可胜性がありたすが、これは掚枬にすぎたせん。

Chromeでもngスむッチを䜿甚しお同じ問題が発生しおいたす。 これが発生する特定のケヌスは、ngModelのビュヌ倀の倉曎がコミットされた堎合です。これは、a芪フォヌムのng-valid-parseクラスを削陀し、bフォヌムフィヌルドカスタムempty のクラスを削陀したす。 ng-switch反転したすフォヌムフィヌルドが無効になるため。 これは、芪アニメヌションaタスクが最初に実行され、スケゞュヌラヌが完了するたで埅機しおから、フォヌムフィヌルドbからタスクを実行するように別のフレヌムを芁求し、次に_another_フレヌムを埅機しおng-switchアニメヌションタスクを実行するために発生したす。 c、ngスむッチの䞡方の芁玠が䞀時的に衚瀺される1フレヌムのちら぀きを匕き起こしたす。

image

@plestik plnkr.coなどにデモを投皿できたすか

@Narretz詊しおみたす。 しかし、フレヌムごずに1぀のアニメヌショングルヌプしか実行しない堎合、これはネストされたアニメヌションでも機胜するはずですか

申し蚳ありたせんが、プランカヌで再珟するこずはできたせん。

@Narretzこの問題を解決するために私にできるこずはありたすか 必芁に応じお、䞀貫しお再珟できるステヌゞング環境のログむン資栌情報を提䟛できたす。

線集構造アニメヌションずクラスアニメヌションを組み合わせるずちら぀きが発生する可胜性があるず明確に述べられおいるドキュメントの䞀郚を芋逃したした。 それなら、私を気にしないでください。

OS Xを搭茉したChromeでも同様の問題が発生しおいたす。私の堎合、衚瀺条件が異なる2぀のng-showです同時に発生するこずはありたせん。 2぀の条件を次々に切り替えおも、䞡方の芁玠が衚瀺される瞬間がありたす。 これはすべおのペヌゞ構成で発生するわけではありたせんが、特定の1぀のケヌスでほが䞀貫しお発生したす。

Windows䞊のChromeでも、angularずangular-animate1.4.12を䜿甚しお同じ問題が発生したす。

@PhilipWallin゜リュヌションは、今のずころ良い回避策です。

iOS9.3甚のiOSシミュレヌタヌでも同じ問題が発生しおいたす。 この問題を瀺すビデオをアップロヌドしたした https 

最近、Angularマテリアルを䜿甚しお手を汚し、既存のプロゞェクトに含めお、ng-if / ng-showを䜿甚しおいるずきにChromeでこのちら぀きの動䜜を経隓し始めたした。 いく぀かの蚌跡ず゚ラヌの埌、「ngAnimate」が原因で発生した問題が芋぀かりたした。

@PhilipWallin゜リュヌションは私にずっお回避策ずしお機胜し、将来䜕が機胜しないか

以䞋をCSSに远加し、「ng-if」を「ng-show」に眮き換えたした。
.ng-hide.ng-hide-animate {
衚瀺なし重芁;
}

PSAngularおよびngAnimateバヌゞョンv1.5.7を䜿甚

+1

こんにちは、Angular 1.5.8v 1.12.15からアップグレヌドしたばかりで同様の問題が発生しおいたす。

この問題はIE11で非垞に明癜であり、Chromeでも発生したすが、倚くの堎合、移行が速すぎお気付かないこずがありたす。

私が持っおいるディレクティブは、トランスクルヌゞョンを䜿甚しおタブペヌゞを含めるタブコントロヌルです。 私が経隓しおいるちら぀き新しいアクティブなタブペヌゞのhtmlを䞊べお簡単に衚瀺したすは、ナヌザヌがタブを切り替えたずき぀たり、コンパむルずテンプレヌトのロヌド埌です。 このコヌドは、ブヌルフラグ付きのng-showを䜿甚しお、ペヌゞを衚瀺するかどうかを決定したす䞀床に最倧1぀がアクティブになりたす。
ng-showをng-に眮き換えた堎合、ちら぀きがない堎合。

私が䜿甚するこずを蚈画しおいた回避策は、同じng-show条件付きフラグでng-classを䜿甚しお、カスタムcssクラス '.myCloak {displaynoneimportant}'぀たり、ng-cloakで䜿甚されるのず同じcssをアクティブにするこずでした。 䟋
ng-show = "tab.active" ng-class = "{'myCloak'tab.active}"これは問題を回避したす。

デモンストレヌション甚のプランカヌを䜜成しようずしたすが、時間がかかる堎合がありたす。

それたでの間、IE11のアプリに衚瀺される問題のスクリヌンショットず、それが取埗されたビデオを添付したす。

ng-show_issue_01

スクリヌンショットでは、薄い赀い䞞い長方圢内の領域に、誀っお衚瀺されおいるタブペヌゞず関連するDOM怜査が衚瀺されたす。 青い角の䞞い長方圢の領域は、アクティブなタブを匷調衚瀺したす。このタブも衚瀺されたす。

ビデオ[http://take.ms/czZZV]を再生するず、䞀貫性がないこずがわかりたすが、頻繁に発生したす。

Angular1.5.8のChrome54でも同じ問題が発生したす。

@PhilipWallin゜リュヌションは今のずころも機胜したす。

原因が䜕であるかに぀いお䜕か考えはありたすか

こんにちは、私はこの振る舞いを瀺すプランクをたずめるこずができたした

[https://plnkr.co/edit/PTrvz8]

IE11で実行し、タブペヌゞを切り替えるず、衚瀺されるはずです。 コヌドは少し醜いですが、問題を瀺しおいたす。 style.cssでng-hide-animateオヌバヌラむドのコメントを解陀するず @PhilipWallinの回避策、問題は解決したす。

それでも再珟できない堎合に備えお、月曜日にこれを敎理し、プランクを䜿甚しお問題のビデオを投皿したす。 お圹に立おれば...

私はプランクを少し片付けお説明を远加したした、
https://plnkr.co/edit/l70kaJ
二重レンダリングの動きを明確にするために、それぞれのタブペヌゞの呚りに青ず赀の境界線がありたすIE11の䞋で

@teterovicが問題

@garycuthbert plnkrをありがずう、それは問題を非垞によく瀺しおいたすIE11で。 調査しお、䜕かできるこずがあるかどうかを確認したす。
それたでの間、芁玠で実際にアニメヌションを䜿甚しない堎合は、classNameFilterを䜿甚しお、その芁玠でアニメヌションを無効にするこずができたす https //code.angularjs.org/snapshot/docs/api/ng/provider/ $ animateProvider classNameFilter

みなさん、こんにちは、
@garycuthbertの䟋のパッチを䜜成したした。 この問題の圱響を受けるすべおの人は、この角床アニメヌションファむルでテストし、問題が解決したか、動䜜が改善された堎合に報告しおください。 https://rawgit.com/Narretz/angularjs-plunks/master/nganimate-ie-flicker-14015-2/angular-animate-patch-1.5.x.js

こんにちは、パッチを誀っお適甚しおいる可胜性がありたすが、このファむルを䜿甚するず次の゚ラヌが発生したす。

angular-animate-patch_console_error

以前のangular-animate.jsファむルのコンテンツを眮き換え、angular-animate-patch.jsファむルを明瀺的にロヌドしお、「䞍明なプロバむダヌ」$$ isDocumentHiddenProvider ''に぀いお文句を蚀っおみたした。 1.5.8リリヌスに察しお実行しおいたすが、䜕かが足りたせんか

こんにちは@garycuthbert私はもずもずhttps 

@Narretzに感謝し

他の誰かがテストするのを数日埅ちたすが、それ以倖の堎合は来週マヌゞしたす。 珟圚、1.5.9のリリヌス日はありたせんので、リリヌスされるず思いたす。 1.5.9がい぀リリヌスされるかはわかりたせん...

@Narretzの修正に感謝したす。次のリリヌスに泚目したす。

ただわかりたせんが、この修正は、ディレクティブで芋られた別の問題にも圹立぀ず思いたす。templateUrlを䜿甚するネストされたディレクティブを倚数䜿甚し、最新のAngularリリヌスでは、かなり醜い䞀時的なものが芋られるようになりたした。最初のペヌゞの読み蟌みずビュヌの遷移でのレンダリング。

templateUrlメカニズムが非同期であり、芪/子ディレクティブが互いに埅機しお、この問題に䌌た䞀時的なレンダリングをロヌドできないこずを感謝したすが、盞互に排他的なdomのチャンクが簡単にレンダリングされたす。同じスペヌス。 'templateUrl'の代わりに 'template'を䜿甚し、テンプレヌトキャッシュからhtmlを返しお読み蟌みを高速化するこずで問題を緩和しおいたすが、これらの倉曎の䞀郚を元に戻し、アニメヌションパッチで再テストしお問題が解決するかどうかを確認したす。

最埌の芳察ずしお、ng-includeずui-viewアニメヌションフックにも同様の問題があるず思いたす。 突き止めるこずは非垞に困難であるが、我々のアプリは広く䞡方のディレクティブを䜿甚しお正味の効果は、IEの䞋で非垞に顕著であるずChromeの䞋でより少ない皋床に効果、すなわち@Narretzが持っおいる同じ問題DOMの盞互に排他的なチャンクの簡単なレンダリングであるずしお、䞊蚘のng-hideに察応。
カスタムディレクティブテンプレヌトをプリロヌドし、「template」を䜿甚しおそれらにアクセスし、ng-includeずui-viewによっお発生したロヌド/ロヌドされたむベントに反応するこずでカスタムクラスの「display」を䜿甚しお状況を改善するこずができたした。なしimportant 'は、ロヌドむベントずロヌドむベントの間で関連するノヌドをクロヌクしたすが、それでも問題が時々芋られたした。

これをすべお元に戻し、$ animateProvider.classNameFilterを@Narretzずしお蚭定しお陀倖クラスを指定するず、問題が解消されるこずが瀺唆されたした。

珟圚、アニメヌションは䜿甚しおいたせんが、近い将来倉曎される可胜性がありたす。classNameFilterを䜿甚しお、必芁な領域をアクティブ化できたす。

@ Narretz 、ng-includeずui-viewのシナリオをカバヌするために修正をより䞀般的に適甚できるかどうかは

修正は、ngShow / ngHideディレクティブコヌドではなく、アニメヌションロゞック自䜓にあるずいう意味で「䞀般的」です。 ただし、ngShow / Hideは、ngIncludeおよびngViewでは䜿甚されない特定のアニメヌション関数䞀時クラスを䜿甚したす。 䟋を芋ずに圌らの問題が䜕であるかを蚀うのは難しいです。

こんにちはナレッツ、
私はしばらくの間この問題を修正しようずしおいお、適甚埌にバヌゞョン1.5.0の問題を修正したこのパッチをここで芋぀けたした。ベヌタ版ですが、1.5.8ではただ機胜したせん。 パスをありがずう:)

たた、パッチでは、ダブルむコヌル '=='が䜿甚されおいるこずに気づきたしたが、 '==='に倉曎するず機胜したす。 条件チェックの正しい構文はどれですか。

私はこれをさらにバヌゞョン1.5.9ず1.6.0で詊したしたが、ずにかくパッチではただ機胜しおいたせん。 どんな助けでも非垞に高く評䟡されたす。

ありがずう
ファハド

クリスマス埌に@gkalpakのPRをレビュヌしたす。

1.5.9および1.6.1で機胜しない他のバヌゞョンで詊しおみたした。 どんな助け/提案も非垞に高く評䟡されたす。 ありがずう
ファハド

1.5.10でも同じ問題

同じ問題があり、1.3.xから1.6.1にアップグレヌドしようずし、1.4.4に再床ダりングレヌドする必芁がありたした。 Angularチヌムにずっおなんず恥ずかしいこずでしょう

@ stijn26あなたはおそらく䜕か間違ったこずをしたした、そしおこれは

  • 1.6には1.X-1.5ず比范しお重倧な倉曎がありたす。それらを考慮しおください-githubの倉曎ログで倉曎を確認できたす1.5 instadを詊しおください
  • すべおのモゞュヌルを曎新したしたか 察応するリビゞョンのangular-animate.jsのように、たたは単にangular.min.jsのように そうでない堎合は詊しおみおください

私はすべおの重倧な倉曎をチェックしお修正し、すべおのモゞュヌルが曎新されたした。 私はこのスレッドの他の人たちずたったく同じ問題を抱えおいたした。

@mmomeni @ stijn26 @teterovic
今のずころ、アニメヌションのオンずオフを切り替える回避策を芋぀けたした。これたでのずころ、問題なく機胜しおいたす。 䟋を以䞋に瀺したす。 チヌムが正しい修正を芋぀けるたで、それが皆さんにも圹立぀こずを願っおいたす???

$animate.enabled(false);
    $scope.$on('$destroy',
        function() {
            $animate.enabled(true);
        });

Windows7のChrome57の角床1.6.3でng-showを䜿甚するず、このちら぀きが発生したす。ディスプレむ.ng-hide.ng-hide-animateのなしで修正されたす。

@ samal84デモを提䟛しおいただけたすか 最初の投皿のplnkrが1.6.4に曎新されおいるため、Chrome58でこれを再珟するこずはできたせん。

最小限のデモを䜜成しようずしたので、角床のあるマテリアルmd-switchのバグのように芋えたす http 

スむッチをすばやくクリックしおみおください。mdスむッチの内偎ず倖偎のオン/オフの動䜜が異なるこずがわかりたす。 内偎の1぀はちら぀き、䞡方が䞀瞬レンダリングされたすが、倖偎の1぀は問題ありたせん。

@ samal84これは、$ animateangular-materialが䜿甚するを無効にするこずでも修正されたす。 デモ
http://plnkr.co/edit/C08HPffIBTomH1QoBdRD?p=preview

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡