🐛

iOS Safari で HTML Popover が期待通りに閉じない

2024/05/09に公開

HTML Popover 属性 は Safari 17 (iOS17 / macOS Sonoma)からサポートされている。
macOS では試した限り期待通りに動作するようだが,iOS Safari (およびWKWebView) では,"Light Dismiss" (ポップオーバーの外をタップするとポップオーバーが非表示になる)が動作しない。

Webkit Bugzilla でも議論されており,どうやらバグらしい。

Adding a pointerdown event listener to document.body, "fixes" the issue.

というコメントがあり,確かに以下のJS[1]を追加するとなぜか期待通りの動作になった。当座の処置としては有効そうである。

window.onload = function() {
	document.addEventListener("pointerdown", function() {})
};
脚注
  1. JavaScript に関しては殆ど素人なので,このコードが適切かどうかはわからない。空の無名関数の代わりに null を渡すと動作しなかった. ↩︎

Discussion