2017-09-07 4 views
4

に非受動的なイベントリスナーを追加しました私は、当社のウェブサイトがどこからともなく、今日突然スクロール・ブロッキング「touchstart」イベント

Added non-passive event listener to a scroll-blocking 'touchstart' event. 
Consider marking event handler as 'passive' to make the page more responsive 

そして、そのだけではなく、一度か二度上のすべてのページにこの1つを得る始めました。..そのうちの何千....

enter image description here

のように彼らは、逆上して実行されています。

違反の洪水を停止する唯一の方法は、私はこの違反が何を意味するかの他の記事を読んで、このライン

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js" type="text/javascript"></script> 

をコメントアウトすることですが、私は本当に私が二時間の間で異なる何かをやったことを見ることができません前回と今(私はそれが助けられているかどうかを見るために完全なロールバックを行った)

誰かがjquery.min.jsにバグを入れたような気がしますが、

アイデア?私ができること全てをデバッグしようとしましたが、何が原因なのかまだ分かりません。

UPDATE

私はすべての<button><md-tooltip>text</md-tooltip></button><button data-toggle="tooltip" title="text"></button>これは、すべての違反の99%を取り外し、交換。

+0

は、それはまだあなたの以前のバージョンでそれを行うのか?あなたがこれを追加したブラウザの更新である可能性があります... – Salketer

+0

うーん、良い質問...今日私は積極的にクロームブラウザの拡張機能として 'Speed Dial 2 - New tab 2.2.1'を追加しました。空のページのショートカット) - しかし、問題を引き起こした場合に備えて、私はそれをアンインストールしました。 – torbenrudgaard

+0

Firefoxでページを実行しようとしましたが、ここではjqueryは縮小されたコードのどこかの深いところで無限ループに入ります。 – torbenrudgaard

答えて

2

もう一度これを掘り下げてみてください。これは新しい動作ではありません。少し前に報告されていますが、jQueryはまだ修正していません。

問題は、ハンドラのために、それはpreventDefault()を呼び出すことはありませんが、あることを持っていますが、jQueryのは、事前に知っていないpassive可能にするという事実にある...

私はあなたを与えることができる唯一のチップが変更されますあなたのコンソールロギングレベルと "Verbose"を削除してください。これを解決するためのアイデアについては、this issueにフォローアップしてください。

+0

問題は、違反の量がウェブサイトを減速させ、jQueryが無限ループに入り、私たちがこれらの違反を最大10,000回吐き出すいくつかのページがあることですブラウザを閉じる)。 jQueryをコメントアウトしても問題ありません。では、ハンドラを「受動的」に設定するにはどうすればよいですか? – torbenrudgaard

+0

[OK] Salketer - 何かを見つけました... ' testing 'はこの違反の原因となっているものです。私はまだそれが原因で移動するものがあることを確認しています。 – torbenrudgaard

+0

また、この1つの ''が多くの原因となっています: '[Violation]スクロールブロッキングに非パッシブイベントリスナーを追加しました 'あなたがng-modelを使うときだけです。 – torbenrudgaard

1

この私に問題を解決:

jQuery.event.special.touchstart = { 
    setup: function(_, ns, handle){ 
    if (ns.includes("noPreventDefault")) { 
     this.addEventListener("touchstart", handle, { passive: false }); 
    } else { 
     this.addEventListener("touchstart", handle, { passive: true }); 
    } 
    } 
}; 
+0

すばらしい答え!ありがとう – Valdrinit

+0

私はこれをどこに追加しますか? JSの後かJSの後か? – WilliamK

+0

JS挿入後に "JQuery"が宣言されるようにロードする必要がありました。だから私はあなたのスクリプトのインクルードをJS挿入後に読み込むように追加しましたが、私はまだ同じエラーを受け取ります。 – WilliamK

関連する問題