対応ブラウザ(動作確認済み)
- Windows : IE6, IE7, IE8, Firefox2.0, Firefox3.5, Firefox3.6, Safari3.1, Safari4.0, Opera9, Opera10
- MacOS X : Firefox2.0, Opera9, iCab3.02
- JavaScript使用可能なこと
確認済み動作不可ブラウザ(XMLHttpRequestの機能を持つ物のみ)
- Windows : Opera(Rangeヘッダの送信)
- MacOS X : Opera8.5, iCab3.02 (multipart/* の受信、Rangeヘッダの送信), Opera(Rangeヘッダの送信)
Safari1.2ではInsertFromURI等で文字化けする可能性があります
Q & A っぽいこと
Dabten.InsertHTML()とDabten.InsertDOM()の表示結果が異なる
省略可能な終了タグを省略した場合、Dabten.InsertDOM()はエレメントの終了と判断できず、要素を入れ子にします。
終了タグを省略しないか、Dabten.InsertHTML()を使用してください。
テーブルの</td>を省略し、Dabten.InsertHTML()で挿入した場合、Operaで表示が崩れることがあります。
これはだぶ天ではなくOperaの問題と思われます。テンプレート中で テンプレートエンジンに使われているキーワードを使いたい
このテンプレートエンジンがキーワードにするのは {tpl: という文字列から } までです。
{ : } これらの記号だけではキーワードとして認識されませんので、そのまま使っても問題ありません。
{tpl: という文字列を表示したいは : (コロン)を : と書くか { (ブレス)を { と書くことで対応できます。namespaceを付けるには
Content-Typeヘッダがapplication/xhtml+xml、application/xml、text/xmlのいずれか時に、Firefox、Safariのみnamespaceが付きます。
これらのMIME-Typeを使用していない状態でnamespaceを無理矢理つけると、一部のブラウザでスクリプトエラーやフリーズします。
IEはnamespaceに対応していません。
また、IE6では*/xmlを使用すると、HTMLやXHTMLとしてではなく、スタイルシートなしのXMLとして表示します。multipart/mixedについて
RFC2388のmultipart/mixedに準じます。
Content-DispositionのnameにテンプレートIDを記述し、本文にテンプレートの内容を書いてください。詳細はmultipart/mixedの仕様書を参照してください。
multipart/form-dataの送信について
試食版その捌 (dabten 1.0.h)からの仕様
送信データはRFC2388のmultipart/mixedに準じますが、XMLHttpRequestの仕様上、テキストデータでなければなりません。
そのため、MIME-Typeがtext/*はそのまま、それ以外はescape()して送信するため、バイナリデータが%nnエンコードされたテキストデータとして送信されます。Ruby On Railsにmultipartで送信すると、場合によりサーバーが停止する可能性がある
[ruby-list:44296] multipartで送信した時のRails/cgi.rbの動作について
おそらくRubyの新しいバージョンでは対応されていると思いますが、現在のバージョンでは全ての項目にContent-Dispositionのfilenameを付けていますので、大量のデータをmultipartで送信することは避けたほうが良いと思います。
未対応HTMLタグ
ブラウザ別未対応タグ一覧を参照してください。
裏技はありますか
天かすを準備中です。
結局のところ、何をどうすれば良いですか
お茶を準備中です。
不具合 っぽいこと
現在確認済みの不具合と対処方です。
生成されるHTMLでテンプレートキーワードの前後の改行が残る
通常のHTMLとしては問題ありません。
今後のバージョンにて対応します。Dabten.GetDOM()を使用すると、HTMLタグではない部分で <や>があると、異常終了する
<および>を使用してください。
今後のバージョンで対応します。動作が遅い、複雑なHTMLを作るとiCabが異常終了する。
iCabの異常終了は原因不明です。
iCabは小メモリで動いているので大量のHTMLエレメントを作るのは無理があるかもしれません。DOMエレメントを作成するよりもinnerHTMLを使用した方が早いのは、どんなベンチマークでも結果が出ています。
全般的な動作が遅いのはスピードアップは図りますが、 タグ、属性などが大量に含まれているHTMLを作る場合はDabten.InsertDOM()を使用してinnerHTMLに流し込んだ方が良いと思います。Dabten.Load()で同じテンプレートIDを1回のLoadで重複使用するとスクリプトエラーとなる
同じIDを重複して使用すると、古いテンプレートに上書きされます。
使用する予定のテンプレートには一意になるIDを使用してください。
今後のバージョンで対応します。
このバージョンで追加・修正された機能最新のバージョンは1.0.h(試食版)です
- タグ属性の値の1バイト目に半角スペースがあるHTML-Element-Objectを生成すると、スクリプトが停止する不具合を修正
- 送信enctypeにmultipart/form-dataを指定した場合、XMLHttpRequestのDOMString制限に基づき、MIME-Typeがtext/*のデータはそのまま、それ以外はescape()して%nnエンコードされたテキストデータとして送信するように変更。
予定(実装時期未定)
- namespace/xslの詳細な対応
- XMLドキュメントの対応
- 条件分岐構文中への変数の挿入
- 条件分岐構文に不等号の使用
- テンプレートデリミタ({tpl: })の実行時の動的な変更
- 省略された終了タグの対応
- 文法エラーの含まれたHTMLファイルをテンプレートに使用したときの動作の安定化
- 以前実行したrepeatからevenoddを引き継ぐ(insertDOMでのevenoddの引き継ぎ)
- repeatcountのリセット
- デバッグ出力
- スタイルシート(<link>要素)の削除、および使用可否の変更
- namespace/xslの詳細な対応
- テンプレートタグによる数値、日付データのフォーマット指定
- 他のテンプレートファイルのインクルード
- テンプレートファイルの一部から、新たなテンプレートを作成する
- エンプティタグのサポート
- 軽量化(小メモリ化)
- 高速化
- テンプレートデリミタ周辺の改行コード削除
- テンプレートファイル内でのコンフィギュレーション(動作設定)
- テーブル生成サポート(if文とrepeatcountの併用ではなく、行数、列数を指定してのtr、tbodyタグの自動出力等)
History
バージョン 1.0.h(試食版) 2010.2.28
- タグ属性の値の1バイト目に半角スペースがあるときにスクリプトが停止する不具合を修正
- 送信enctypeにmultipart/form-dataを指定した場合、XMLHttpRequestのDOMString制限に基づき、MIME-Typeがtext/*のデータはそのまま、それ以外はescape()して%nnエンコードされたテキストデータとして送信するように変更。
バージョン 1.0.g(試食版) 2008.8.21
- IEのスタイルシート対応の調整
バージョン 1.0.f(試食版) 2008.8.14
- 若干の小メモリ化
- スタイルシート対応の調整
- イベントハンドラ(onclickなど)セット時のメモリリーク対応
- Rangeヘッダの送信とmultipart/byterange受信時の対応
- ソースコードの整理
バージョン 1.0.e(試食版) 2008.7.9
- IEにて、methodをPOSTにすると送信できなかったバグを修正
- テンプレートのキーワードの区切り文字として半角スペースを適用
- {tpl::repeatcount}が1から始まっていなかったのを修正
- ソースコードの整理
バージョン 1.0.d(試食版) 2007.12.4
- IEにて、Dabten.GetDom()を使用するとテンプレートに記載されたイベントハンドラが動かない不具合の修正(Thanks to シェイルさん)
- Dabten.GetDom()にて、style属性の一部が効かない不具合の修正(Thanks to シェイルさん)
- Safari3でXMLHttpRequestのresponseHeaderが取得できなかった不具合を修正
- HTTPヘッダ(レスポンスヘッダ)取得時に、大文字小文字が特定されていなければ取得できなかった不具合を修正
- ソースコードの整理
バージョン 1.0.c(試食版) 2007.11.17
- Dabten.Net.Loadのフォームエレメント指定によるフォームデータの送信
- XMLデータの受信とテンプレートへの反映
- Dabten.Net.Load、Dabten.Load/LoadMixed、Dabten.InsertDOM/InsertHTML/GetFromURI/InsertFromURIの強制再読み込みオプション
- Dabten.Net.Load、Dabten.Load/LoadMixed、Dabten.InsertDOM/InsertHTML/GetFromURI/InsertFromURIのコールバック関数指示プロパティを大文字小文字無指定化
- ドキュメント内でのテンプレート記述と取得
- 実態参照のサポート
バージョン 1.0.b(試食版) 2007.11.1
- ドキュメントへのlink要素の追加機能
- multipart/form-data | mixed受信時、CRLF以外の改行コードも、multipart/*として処理する
- Dabten.LoadMixed()、送信メソッドのPOST制限の解除
- {tpl::repeatcount} 追加
バージョン 1.0.a(試食版) 2007.10.17
- 公開
ライセンス/利用条件
COPYRIGHT
Copyright(c) Wataru Kanzaki, https://www.wi-wi.jp/, 2007-2012
ソースコードに上記著作権表記を記載することを条件に、商用、非商用にかかわらず、自由に改変、利用、配布頂けます
改変の有無にかかわらず、だぶ天単体での販売を禁止します。
このプログラムを使用したことより不具合等が生じた場合でも、作者は一切の責任を負いません
リンクについて
著作権表記のサブドメインがwww、配布ページのサブドメインがdabtenです。
著作権表記のURLにはhttps://www.wi-wi.jp/を使用してください。
リンクを付けられる場合や、紹介の場合は、www、dabtenのどちらでも結構です。
紹介、リンクをされるときの連絡は不要です。