0

私はクライアント側のテクノロジ(ほとんどの場合JQueryを介したjavascript)を使用してネイティブモバイルアプリケーションCMSシステムに取り組んでおり、ASP.NETと同様のテンプレートシステムを実装しています。

したがって、次のように、starttemplate、endtemplate、およびitemtemplateを持つナビゲーションコントロールがあるとします。

<div data-type="navigation" id="navigationControlDemo">
    <div data-type="starttemplate">
      <ul id="Menu">
    </div>
    <div data-type="itemtemplate">
      <li><a href="[[Link]]">[[Text]]</a></li>
    </div>  
    <div data-type="endtemplate" >
        </ul>
    </div>
 </div>

私の問題は、次のようにタグが「適切に」閉じられるようにhtmlを修正したいと考えているように見えるブラウザです。

 <div data-type="navigation" id="navigationControlDemo">
    <div data-type="starttemplate">
      <ul id="Menu">
      </ul>
    </div>
    <div data-type="itemtemplate">
      <li><a href="[[Link]]">[[Text]]</a></li>
    </div>  
    <div data-type="endtemplate" >

    </div>
    </div>

いくつかの回避策とクイックハックを試しましたが、役に立ちませんでした。「<"">」を特定の文字に置き換え、ロード後にそれらを置き換えようとしましたが、それでも問題は発生します。

4

4 に答える 4

4

コードが有効なhtmlではありません。タグをインターリーブすることはできません(1つの場所で開き、まったく別の場所で閉じます)。タグは適切にネストする必要があります。

有効:

<p>
    <ul>
    </ul>
</p>

無効:

<p>
    <ul>
</p>
    </ul>

「オフ」に見えない限り、2番目のものを適切にインデントすることはできないことに注意してください。最初にHTMLが正しいことを確認してください。そうしないと、ブラウザが正しく動作します。

-update-クライアント側のテンプレートが必要なため、不要のは(無効な)htmlをhtmlとして解析することです。ただし、これは明らかに有効なxmlでもありません。これは、必要な場合があります。

あなたができることは、セクションの内容をとしてラップすることですCDATA

<div data-type="navigation" id="navigationControlDemo">
    <div data-type="starttemplate"><![CDATA[
      <ul id="Menu">
    ]]></div>
    <div data-type="itemtemplate"><![CDATA[
      <li><a href="[[Link]]">[[Text]]</a></li>
    ]]></div>  
    <div data-type="endtemplate" ><![CDATA[
        </ul>
    ]]></div>
 </div>

これをxmlとして解釈すると、テンプレート内の部分はマークアップではなくテキストと見なされます。

于 2012-12-04T09:04:27.820 に答える
0

<div>要素の子として要素を持つことはできません<ul>。■タグは子として
<ul>のみ受け入れます。仕様<li>

また、ここでタグを誤ってネストしているようです。

<div data-type="starttemplate">
    <ul id="Menu">
</div>

がまだ開いている<div>場合は、それを閉じることはできません。<ul>そのため、<ul>は時期尚早に閉鎖されています。

于 2012-12-04T09:05:47.013 に答える
0

基本的に、あなたはブラウザに不正な形式の乱雑なタグスープを表示させる方法を求めています。神に感謝します。ほとんどのブラウザは、そのようなコードを盲目的にレンダリングするだけではありません。結果が耐えられず、ページがすべて一緒に理解できなくなるからです。
とはいえ、生のページソースを表示すると、おそらく未修正の生のマークアップが表示されます。しかし、ブラウザは実際にそれをレンダリングできないため、エンジンはプレートにステップアップし、最善を尽くします

ただし、これを回避する方法を見つけるために時間を無駄にしないでください。これは、煩わしいことではなく、役立つ機能にすぎません。<div><ul></div>また、HTML5には、許可されるものと許可されないもの、およびブラウザーが無効なマークアップを処理する方法(たとえば、コード内:無効と見なされる)について、さらに多くのルールがあります。気になる場合は、W3Cの仕様を参照して、このテーマの詳細を確認してください。

于 2012-12-04T09:09:17.633 に答える
0

私のようなタグを使用する代わりに、キーワードを使用して<と>を表し、テンプレートシステムを使用してすべての正しいhtmlをレンダリングし、それらのキーワードを、と>に置き換えて、後でドキュメントに追加します。テンプレートタグの構文は煩わしいですが、必要な方法で機能します。

于 2012-12-04T09:49:25.407 に答える