Помимо того факта, что функциональность 'dialog' не поддерживается , но во многих браузерах (кроме Chrome и некоторых других браузеров на основе Chromium) ваш HTML-код недопустим, поскольку, как указано в MDN:
Разрешенные родители Любой элемент, который принимает содержимое потока
Диалог MDN Документы
ваше диалоговое окно вложено в элемент <span>
, который является как потоком, так и элементом фразового содержимого -> список элементов содержимого потока , но принимает только фразовое содержимое. (Также p
принимает только фарсирующий контент). Таким образом, dialog
является потоковым контентом, а span
принимает только фарсирующий контент, генерирует недопустимую структуру HTML.
Известно, что Chrome и другие браузеры на базе Chromium более «прощающие», чем Firefox и другие. Я предлагаю вам изменить структуру HTML, чтобы она соответствовала официальным документам. Вы можете проверить свою HTML-структуру онлайн. Для начала было бы неплохо сделать небольшой отступ:)
Таким образом, поведение в FF является «нормальным».
Ваша HTML структура должна выглядеть как
<p>
Here's a paragraph
<span>
<label for="note" class="noteLabel">
<sup>Note</sup>
</label>
<input type="checkbox" id="note" class="note-toggle" style="">
</span>
</p>
<dialog class="note-content">
This is moved outside of the p in Firefox DOM and an extra p added below in DOM. Works fine in Chrome.
</dialog>