none
ElementにinnerHTMLで書き込むと<ruby>タグの一部が消える RRS feed

  • 質問

  • divなどのElementにinnerHTMLで<ruby>タグを入れるとタグの一部が消えます。

    表示上はルビがふられているのですが、innerHTMLを見てみると確かに消えています。

    例)

    var inputData = "<ruby><rb>日本</rb><rt>にっぽん</rt></ruby>";
    document.getElementById("aaa").innerHTML = inputData;
    alert(document.getElementById("aaa").innerHTML);
    

    この結果表示されるのは「<RUBY>日本</RB><RT>にっぽん</RT></RUBY>」です。

    <RB>の開始タグだけが消えています。

    IE8でこの現象を確認しましたが、他のバージョンでも発生するかもしれません。

    恐らくはIEのバグだと思われますが、何か情報をお持ちであれば教えてください。

    2010年6月11日 19:21

回答

  • そもそもHTMLの書き方が間違ってますよね? ググるといくつかのサイトで<RB>タグが存在するかのような説明がされていますが、DHTML Objects の一覧には含まれていません。
    <RUBY>タグ の説明によると「<RUBY>日本<RT>にっぽん</RT></RUBY>」と書くべきなようです。

    その上で、間違ったHTMLを意図通りに動作させたい、という希望に応えるためのハックがあります。

    document.createElement( "RB" ); // ダミーで<RB>タグを作成

    これをあらかじめ実行しておくと、IEは<RB>をタグと認識し、jupiter6さんの期待通りの動作をします。

    • 回答の候補に設定 山本春海 2010年6月18日 4:26
    • 回答としてマーク 服部清次 2010年6月21日 1:28
    2010年6月11日 22:44

すべての返信

  • そもそもHTMLの書き方が間違ってますよね? ググるといくつかのサイトで<RB>タグが存在するかのような説明がされていますが、DHTML Objects の一覧には含まれていません。
    <RUBY>タグ の説明によると「<RUBY>日本<RT>にっぽん</RT></RUBY>」と書くべきなようです。

    その上で、間違ったHTMLを意図通りに動作させたい、という希望に応えるためのハックがあります。

    document.createElement( "RB" ); // ダミーで<RB>タグを作成

    これをあらかじめ実行しておくと、IEは<RB>をタグと認識し、jupiter6さんの期待通りの動作をします。

    • 回答の候補に設定 山本春海 2010年6月18日 4:26
    • 回答としてマーク 服部清次 2010年6月21日 1:28
    2010年6月11日 22:44
  • jupiter6 さん、

    こんにちは。
    フォーラム オペレーターの服部 清次です。

    jupiter6 さんがこちらの質問を投稿されてから時間が経ちましたが、その後の状況はいかがでしょうか?
    佐祐理 さんの回答はご確認いただけましたでしょうか?

    今回、佐祐理 さんの回答が参考になるのではないかと思いましたので、
    勝手ながら、ひとまず私の方で [回答としてマーク] のチェックを付けさせていただきました。

    また何か疑問がありましたら、ぜひ MSDN/TechNet フォーラムをご利用ください。
    今後とも、よろしくお願いします。
    それでは、また。


    __________________________________________________
    マイクロソフト株式会社 フォーラム オペレーター 服部 清次

    2010年6月21日 1:31