Template Usage : サポート、動作環境

UP PREV NEXT

対応ブラウザ(動作確認済み)

  • Windows : IE6, IE7, Firefox2.0, Opera9
  • MacOS X : Firefox2.0, Opera9, iCab3.02(機能限定)
  • JavaScript使用可能なこと

確認済み動作不可ブラウザ : Opera8.5

UP PREV NEXT

Q & A っぽいこと

  1. <tbody>にTemplate.GetHTML()で作成したデータを入れられない

    ブラウザの仕様です。
    <tbody>など、一部のエレメントはinnerHTMLはreadOnlyとなります。
    Template.GetDOM()で作成したエレメントをappendChildまたはinsertBeforeで挿入して下さい。

  2. <iframe>をDOMエレメントで挿入出来ない

    ブラウザの仕様です。
    document.createElement('<iframe class="myframe">')という属性ごと作成する方法がありますが、template.jsでは対応していません。
    <div><iframe class="myframe"></iframe></div>と、div要素で囲ってTemplate.GetHTML()を使用して下さい。

  3. Template.GetHTML()Template.GetDOM()の表示結果が異なる

    省略可能な終了タグを省略した場合、Template.GetDOM()はエレメントの終了と判断できず、要素を入れ子にします。
    終了タグを省略しないか、Template.GetHTML()を使用してください。
    テーブルの</td>を省略し、Template.GetHTML()で挿入した場合、Operaで表示が崩れることがあります。
    これはtemplate.jsではなくOperaの問題と思われます。

  4. テンプレート中で テンプレートエンジンに使われているキーワードを使いたい

    このテンプレートエンジンがキーワードにするのは {tpl: という文字列から } までです。
    { : } これらの記号だけではキーワードとして認識されませんので、そのまま使っても問題ありません。
    {tpl: という文字列を表示したいは : (コロン)&#58; と書くか { (ブレス)&#123; と書くことで対応できます。

UP PREV NEXT

不具合 っぽいこと

現在確認済みの不具合と対処方です。

  1. IE、XHTMLにおいて、namespaceつきでHTML/DOMエレメントを生成するときに、namespaceが適用されない

    IEでdocument.createElementNS()、element.setAttributeNS()を使用するとスクリプトエラーになるため、 namespaceの付かないdocument.createElement()、element.setAttribute()を使用しています

  2. Template.GetDOM()を使用するとイベント属性でスクリプトエラーとなる

    次のバージョンにて対応します。
    現バージョンではテンプレートにonclick、onmouseover、onmouseoutなど、on~で始まる属性が含まれる場合は、Template.GetHTML()を使用してください。

  3. 生成されるHTMLでテンプレートキーワードの前後の改行が残る

    通常のHTMLとしては問題ありません
    <pre>や<textarea>などで影響が出るかもしれませんので今後のバージョンにて対応します。

  4. Template.GetDOM()を使用すると、HTMLタグではない部分で <>があると、異常終了する

    &lt;、または&gt;を使用してください。
    今後のバージョンで対応します。

  5. Template.GetDOM()でstyle属性のfloatが効かない

    次のバージョンで対応します。

  6. 動作が遅い、複雑なHTMLを作るとiCabが異常終了する。

    iCabの異常終了は原因不明です。
    動的生成じゃなくても落ちることがありますし、iCabは小メモリで動いているので大量のHTMLエレメントを作るのは無理があるかもしれません。

    DOMエレメントを作成するよりもinnerHTMLを使用した方が早いのは、どんなベンチマークでも結果が出ています。
    全般的な動作が遅いのはスピードアップは図りますが、 タグ、属性などが大量に含まれているHTMLを作る場合はTemplate.GetHTML()を使用してinnerHTMLに流し込んだ方が良いと思います。

  7. Template.Load()で同じテンプレートIDを1回のLoadで重複使用するとスクリプトエラーとなる

    次のバージョン(0.11)で対応します。
    同じIDを重複して使用すると、古いテンプレートに上書きされます。
    メモリの節約になりますが、使用する予定のテンプレートには一意になるIDを使用してください。

UP PREV NEXT

予定(順不同)

  1. 実装予定メソッドの実装
  2. XMLデータをテンプレートへ反映
  3. JSONPデータの取得とテンプレートへの反映
  4. namespace/xslの詳細な対応
  5. 条件分岐構文中への変数の挿入
  6. テンプレートデリミタ({tpl: })の実行時の動的な変更
  7. 省略された終了タグの対応
  8. 文法エラーの含まれたHTMLファイルをテンプレートに使用したときの動作の安定化
  9. 以前実行したrepeatからevenoddを引き継ぐ(テーブルの追加記述などの時のevenoddの引き継ぎ)
  10. repeatcountのリセット

UP PREV NEXT

ライセンス/利用条件

ソースコードに上記著作権表記を記載することを条件に、商用、非商用にかかわらず、自由に改変、利用、配布頂けます
このプログラムを使用したことより不具合等が生じた場合でも、作者は一切の責任を負いません
このプログラムは修正BSDライセンスの元で配布しています。