0

わかりました、私はそれを求めています、私は知っています。我慢してください。

次のようないくつかのテーブル行タグの間に埋め込まれた <form> があります。

<table>
  <tr>
    <td>foo</td>
  </tr>
  <form>
  <tr>
    <td>bar</td>
  </tr>
  </form>
</table>

フォーム タグの配置が違法であることはわかっていますが、私が試したすべてのブラウザで許可されます。私はこのコードの設計を制御できませんので、ご容赦ください。

このページを JQuery と JQuery UI.Layout プラグイン ( http://layout.jquery-dev.net/index.cfmを参照) で読み込むと、フォーム タグで囲まれたテーブル行がレンダリングされなくなりました。 . フォーム自体には表示プロパティがないため、JQuery または UI.Layout プラグインがそれらの行にその表示の欠如を継承させていると思います。

Firebug は、それらの行がグレー表示され、form タグの 1 レベル下にインデントされていることを示しています。これは、表示の (欠如) に対応していると思います。興味深いことに、JQuery をまったく使用しない場合、Firebug はこれらの行をインデントされていないものとして表示しますが、代わりにそれらを囲むフォーム タグと同じレベルで表示します (もちろん、それらはグレー表示されません) -- ああ、私もこの場合、Firebug はフォームの終了タグをまったく表示しないことに気付きました。

JQuery なのか、UI.Layout プラグインなのか、JavaScript で行ったことが原因なのかはわかりませんが、まだ調査中ですが、これらのライブラリには多くのコードが含まれているので、誰かが何かを持っている場合は、ポインタに感謝します。

これを防ぐ方法はありますか、またはそれらのテーブル行に何らかの表示を強制する方法はありますか? それらの行がそれを継承するように、フォームタグに何らかの表示プロパティを配置する必要があるのではないでしょうか?

私は標準に準拠したコードを強く支持していますが、上司が耳を傾けないことがあります。したがって、「コードを修正してください」というコメントがあれば、それを惜しまないでください。感謝していますが、それは私がここで求めていることではありません。

4

1 に答える 1

0

この問題は、ページが静的にレンダリングされるのではなく、XMLHttpRequest( "AJAX")を介してロードされていることが原因のようです(これはFirefoxの問題のみである場合とそうでない場合があります)。これと同じようです:

http://forums.mozillazine.org/viewtopic.php?f=25&t=645220&start=0&st=0&sk=t&sd=a

そのスレッドには、不正な形式のHTMLを解決する以外に解決策もありませんでした。「通常の」ブラウザページリクエストを介して渡された場合にブラウザがレンダリングするのは非常に面倒ですが、非同期でリクエストされてスクリプトを介してDOMにフィードされた場合はレンダリングされません。

ええと、バグのあるコードはバグのある振る舞いを生みますね?

他に何も欠けているため(まあ、そこに浮かんでいるJavaScriptベースのアイデアがいくつかあります(http://federmanscripts.com/2010/01/12/form-and-table-row-nesting-workaround/など) 、しかしこれらは私の文脈に合わない)、私はユーザー「muが短すぎる」によって上記のコメントとして提案された解決策を使用します。

于 2011-04-29T23:40:43.163 に答える