Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hover疑似クラスについてのページのBasic_exampleにCSSが入っておらず、動作していない #17680

Closed
takayamaki opened this issue Jan 2, 2024 · 5 comments · Fixed by #21323
Labels
l10n-ja Issues related to Japanese content.

Comments

@takayamaki
Copy link

MDN URL

https://developer.mozilla.org/ja/docs/Web/CSS/:hover

この問題に関する節や見出しはどこですか。

例→基本的な例→結果

不完全、不親切、不完全であった情報は何ですか。

EmbedLiveSampleマクロで生成されるLiveSampleにCSSが適用されておらず動作していません

どう表示されるべきだと思いますか。

https://developer.mozilla.org/en-US/docs/Web/CSS/:hover のLiveSampleと同様

補足情報となるリンク、参考資料、引用文献はありますか。

No response

他に共有したいことはありますか。

related #17651

MDN metadata

Page report details
@takayamaki takayamaki added l10n-ja Issues related to Japanese content. needs triage Triage needed by staff and/or partners. Automatically applied when an issue is opened. labels Jan 2, 2024
@YujiSoftware
Copy link
Contributor

YujiSoftware commented Jan 11, 2024

調査しました。

<section aria-labelledby="基本的な例">
    <h3 id="基本的な例"><a href="#基本的な例">基本的な例</a></h3>
    <div class="section-content">
        <h4 id="html">HTML</h4>
        <div class="code-example">
            <pre class="brush: html notranslate"><code>(中略)</code></pre>
        </div>
        <h4 id="css">CSS</h4>
        <div class="code-example">
            <pre class="brush: html notranslate"><code>(中略)</code></pre>
        </div>
        <h4 id="結果">結果</h4>
        <div class="code-example" id="sect2">
            <div class="example-header play-sample" id="sect3">(中略)</div>
            <iframe class="sample-code-frame" title="基本的な例" id="frame_basic_example" src="https://live.mdnplay.dev/ja/docs/Web/CSS/:hover/runner.html?id=basic_example" loading="lazy"></iframe>
        </div>
    </div>
</section>

EmbedLiveSample の第一引数には、サンプルコードを含むヘッダの id を指定します。
https://github.com/mdn/yari/blob/5376a5683ea632fe5f33bcb247d34240b3e56f71/kumascript/macros/EmbedLiveSample.ejs#L5

今回の場合、この第一引数に Basic_example を指定しています。

{{EmbedLiveSample("Basic_example")}}

ただ、英語版では <h3 id="basic_example"> があるのですが、日本語では翻訳していてる関係で <h3 id="基本的な例"> となってしまっているため、ヘッダを見つけられません。

その場合、フォールバックを行っています。
https://github.com/mdn/yari/blob/5376a5683ea632fe5f33bcb247d34240b3e56f71/client/src/document/code/playground.ts?#L259

このフォールバックでは、 いずれかの親要素の直下にあるヘッダ(h1〜h5)を取得します。
つまり、今回のページの場合は <div class="section-content"> の直下にある <h4 id="html">HTML</h4> です。
(英語版と異なる要素を取得してしまっています)
https://github.com/mdn/yari/blob/5376a5683ea632fe5f33bcb247d34240b3e56f71/client/src/document/code/playground.ts#L37-L46

その後、取得したヘッダ要素から次のヘッダ要素までの間にある <pre> の中身を取得します。
本来であれば、ここで h3 の次の div の中にある HTML/CSS を取得できるのですが、今回だと h4 の次の div の中にある HTML しか取得していません。

結果、HTML だけが適用された中途半端なライブサンプルになってしまっていました。

この事象が発生するのは、h4 (#### 見出し)の後に EmbedLiveSample がある場合のみです。
h3 (### 見出し)の後に EmbedLiveSample がある場合は、フォールバックによって適切にコードを拾えているので、問題は起きません。

この挙動が、バグなのか仕様なのかは微妙なところです。
もう少し、mdn/yari (レンダリングシステム)の方を調べてみます。

@YujiSoftware
Copy link
Contributor

mdn/yari の方で経緯を調べたのですが、厄介そうです。
翻訳の問題があるので EmbedLiveSample の引数を省略したり、指定の要素がなかった場合に自動でコードを拾うようにしたかったようですが、h2 の下にある場合と h3 の下にある場合で DOM の構造が異なり、挙動を変えると壊れる恐れがあり保留になってるようです。

そのため、現状だと EmbedLiveSample の引数を変えるしかなさそうです。

ただ、個人的には Compat マクロや Specifications マクロのように引数を省略できたほうがいいと思うので、なんとかしたいです…。

@YujiSoftware
Copy link
Contributor

related #15814

@YujiSoftware
Copy link
Contributor

related #19209

@YujiSoftware
Copy link
Contributor

YujiSoftware commented Apr 21, 2024

related #19012

@yin1999 yin1999 removed the needs triage Triage needed by staff and/or partners. Automatically applied when an issue is opened. label Sep 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
l10n-ja Issues related to Japanese content.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants