2017-08-18 8 views
2

私は、ユーザーがマーカーの上を移動するときに開くポップアップを持っています。現在、ユーザーがポップアップを閉じると閉じます(たとえば、ユーザーはポップアップ内のテキストを閉じることができません)。私はこの問題を解決しようとしているとあなたがここに見ることができるように私は、それを行うための素晴らしい方法を見つけました:
http://jsfiddle.net/sowelie/3JbNY/リーフレットがmouseoutイベントで正しいrelatedTarget要素を提供しないのはなぜですか?

ソリューションが動作しますが、それはそのフィドルで使用されていることリーフレットのバージョンが非常に古いですが、そこで私はリーフレットのバージョンをバージョン1.1.0に更新しました。これは、ソリューションの90%を分解します。

ここに2つのフィドルがありますが、最初のものは古いリーフレットの作業ソリューションと同じですが、私はconsole.logを追加しました。もう1つはconsole.logですが、リーフレット1.1.0を使用しています。
旧1:http://jsfiddle.net/3JbNY/106/
新1:へのマーカーからあなたが出倍の100%、古いソリューションは常に、当然のポップアップ(ある正しいrelatedTarget要素を、ログに記録することをhttp://jsfiddle.net/3JbNY/105/

お知らせポップアップ。マーカーから地図を終了すると、ポップアップにはなりません)。

しかし、リーフレットの新バージョンと同じソリューションに、回relatedTargetの90%は、あなたがポップアップにすべての時間を終了している場合でもないポップアップです。このパーセンテージは任意ですが、実際には計算しませんでした。長時間試してみると、最終的に新しいソリューションはrelatedTargetというポップアップを記録しますが、それは非常にまれです。

ここで正しい動作がわかりたいと思います。私の意見では、古いソリューションが動作するように動作するはずです。私が終了する場所に正しい要素を与えて、ポップアップを終了して閉じていないかどうかを調べることができます。なぜそれが変わったのですか?
relatedTargetを入手するための回避策はありますか?リーフレットチームがこれにパッチを当てているかどうかには依存しませんか?またはrelatedTargetに依存しない全く新しいソリューションですか?

私は助けてくれてありがとう!

編集:タイトルはmouseoverと言っていますが、私はmouseoutを意味しました。

答えて

0

犯人を見つけました。リーフレットクラスの中には、pointer-eventsというCSSプロパティがnoneに設定されているものがありますが、その内容はhereです。このため、ポップアップ上のイベントは無視されていました。だから私はautoの値(私の場合はleaflet-tooltipクラスでしたが、彼らはleaflet-popup-tip-containerというポップアップと同様のクラスを持っていました)にプロパティを単にオーバーライドすることでこれを修正しました。

詳細についてはリーフレットのGitHubでこの問題を確認してください:https://github.com/Leaflet/Leaflet/issues/5720

関連する問題