Microsoft Edgeの(ASP.NET)Webアプリケーションに奇妙な問題があります。
ある時点でonclick
イベントが機能しなくなります。 onclick
イベントに応答するページ上のすべてのボタンが機能しなくなります。同じページに、onmousedown
イベントに応答するボタンがいくつかあり、それらは機能し続けます。
ページを更新すると、問題は解決しました。コンソールにエラーはありません。他のブラウザー(Windows 10のIE11を含む)ではこの問題は発生しません。
同様の問題が発生しましたか?
whyclick
イベントは機能しないため、これは完全な回答ではありませんが、私のチームと私は絶望的に立ち往生していたので、ここに属していると感じますこの質問に対する答えを見つけてください。これはEdgeのバグのようであり、上記の@Comeのコメントに出くわすまで、私たちが試みたすべての回避策は失敗しました。
解決策は、すべてのclick
イベントをmouseup
イベントに変更し、同じ動作をエミュレートすることでした。何らかの理由で、mouseup
がトリガーされなかった場合でも、click
がトリガーされました。 mousedown
も同様に機能しますが、mouseup
はclick
をより適切にエミュレートします。
var listenType = (navigator.userAgent.toLowerCase().indexOf('Edge') != -1) ? 'mouseup' : 'click';
// ...
$("#my_element").on(listenType, function()
{
// ...
}
うまくいけば、これは誰かを助けるでしょう!
これはEdgeのバグです。
私が見つけたのは、子ウィンドウのポップアップと、テーブル内のtrの再配置(または変更)の両方に関連していることです。
これを修正するには、テーブルを強制的に再描画する必要があります。これを行うには、テーブルを変更する前にdisplay:noneを設定し、変更後にdisplay:previousValueを設定します。
お役に立てれば。
私の修正は、「隠された」入力要素を作成し、それにフォーカスを呼び出し、魔法のようにクリックを返すようにすることでした。
私の場合、子要素を削除するとこの問題が発生します。したがって、要素を削除すると(DOMをinnerHTMLで置き換えることを含む)、style.display = "none"
削除する前の要素。これで問題が解決します。
たとえば、私はこの関数を使用します
function removeComponent(selector) {
$(selector).css("display", "none");
return $(selector).detach();
}
の代わりに
function removeComponent(selector) {
return $(selector).detach();
}