組織の登録メンバーが使用する外部アップロードのコンテンツに基づいて、一連の ajax フォームと単純な js hide/show div を処理する Web ページ (php) があります。より保守しやすく拡張可能なサイトを構築するために、私はアーキテクチャ パターンを使用して無限の jQuery 連鎖を防ぐことを検討してきました。つまり、メディエーター パターンです。
Jack Lawson のMediator.jsを使用した人はいますか? 基本的に、メディエーターにサブスクライブして、同じチャネルで何かが発行されたときに実行される関数を使用して「チャネル」(名前空間) をリッスンできます (必要に応じて、応答する前に述語の true/false 関数をチェックすることもできます)。
目標: mediator.js API には大きな可能性があり、有効な xhtml ドキュメントを実装して名前空間を正しく使用する必要があるようです。メディエーター パターンを実装することは、javascript コードを分離し、将来的に複雑な Web アプリをより保守しやすく拡張しやすくするための優れた方法のように思えます。
フラストレーション: 名前空間と mediator.js API によって実装されるメディエーター パターンの両方を理解していると思います。特定の「チャネル」(名前空間) でメディエーターを介して DOM 属性イベントを正常に発行し、それらのチャネルにサブスクライブしてそれらに反応することができました。対応が必要かどうかを確認します。しかし、新しい名前空間が原因で、CSS が要素を認識できなくなりました。
次のような名前空間を作成しました。
<xmlns:active='http://www.xxx.com/tracks/active'
xmlns:completed='http://www.xxx.com/tracks/completed'
xmlns:inactive='http://www.xxx.com/tracks/inactive'>
そして、それらを次のような html 要素に適用します。
<active:div ...>stuff</active:div>
それに応じてcssファイルを変更しました:
active|div { css formatting }
それでも、ページの css フォーマットは壊れています。
レンダリングされたページの doctype 部分は次のようになります。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
これが必須ではないかどうかは完全にはわかりませんが、追加しようとしました:
<? header('Content-Type: application/xhtml+xml'); ?>
次の XML 解析エラーが発生します。
XML 解析エラー: 整形式ではありません
これは、この名前空間定義の等号をxmlns:active='http://www.xxx.com/tracks/active'
問題として指摘していますが、私が読んだすべてのドキュメントは、これが正しい構文であることを示しています。
質問:
- 上記の名前空間を実装した後、CSS が壊れるのはなぜですか?
- ヘッダーに を追加する
<? header('Content-Type: application/xhtml+xml'); ?>
と、前述の解析エラーが発生するのはなぜですか?
助けてくれてありがとう。