我有一个网页(php),它根据外部上传的内容处理一系列ajax表单和简单的js隐藏/显示div,供组织的注册成员使用。为了构建一个更易于维护和扩展的站点,我一直在研究使用架构模式来防止无休止的 jQuery 链接;也就是中介模式。
有人用过 Jack Lawson 的Mediator.js吗?基本上,您可以使用 Mediator 订阅以侦听“通道”(命名空间),并在同一通道上发布某些内容时运行一个函数(如果需要,甚至在响应之前检查谓词 true/false 函数)。
目标: mediator.js api 似乎具有巨大的潜力,并迫使我实现有效的 xhtml 文档并正确使用命名空间。实现中介模式似乎是解耦 javascript 代码并使复杂的 web 应用程序在未来更易于维护和扩展的好方法。
挫折: 我相信我理解由 mediator.js api 实现的命名空间和中介模式。我已经能够通过特定“通道”(命名空间)上的中介成功发布 DOM 属性事件,并订阅这些通道并对它们做出反应——甚至使用 mediator.js 方法在该通道上测试“谓词”以确定是否需要回应。但是由于新的命名空间,我的 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'); ?>
在标题中添加时,我会收到提到的解析错误?
感谢您的任何帮助。