我正在尝试为浏览器(Firefox 或 IE 或 Chrome)开发插件/扩展。这样做的目的是插件/扩展应该识别我自己的自定义标签之一。
例如:
<myowntag1>
...
<mysubtag1 ... />
...
</myowntag1>
如何使用插件/扩展使浏览器识别这一点?
我正在尝试为浏览器(Firefox 或 IE 或 Chrome)开发插件/扩展。这样做的目的是插件/扩展应该识别我自己的自定义标签之一。
例如:
<myowntag1>
...
<mysubtag1 ... />
...
</myowntag1>
如何使用插件/扩展使浏览器识别这一点?
你的问题让我想起了线程上的XML 是如何使用和解释的?- 您的浏览器没有用于未知标签的 api,但它有一个用于将 xml 转换为名为 XSLT 的其他任何东西(包括 html)的 API。我知道做您想做的唯一方法是将您的网页编写为 XHTML(这是 XML,即使使用 HTML5 也是可能的)。请注意,包含 XML 声明的第一行在其位置,并添加包含对 XSLT 样式表的调用的第二行。编写此样式表 - 它必须从 XML/XHTML 源页面复制所有内容,但您自定义的标签除外。这些必须转换为所需的 HTML 输出。此解决方案适用于所有主流浏览器,尽管从一开始就使用转换后的 HTML 可能不太复杂。要打开一个新标签,您可以使用链接的“目标”属性(<a href="http://test.com" target="newtab">Test</a>)。
能够在 XML 页面中嵌入任意 XML(在用户定义的名称空间中),并让名称空间以某种方式与理解该 XML 词汇表的插件代码相关联,这是我们许多人共同的梦想。不幸的是,定义 HTML5 的小组 (WHATWG) 正朝着相反的方向发展:他们不认为这种可扩展性是必需的,并且在 HTML 中嵌入 XML 变得越来越难而不是容易。唯一的例外是像 SVG 或 MathML 这样的 XML 词汇表,由于某种原因吸引了 WHATWG 的人们并得到他们的认可。
如果您从 javascript 手动解析标签,这似乎是一项可行的任务。例如,这就是 Facebook FBML 命名空间标签的实现方式。
假设我们有这个带有自定义标签的 html,custom:header
它应该变成h1
:
<html xmlns:custom>
<body>
<custom:header text="header text"></custom:header>
</body>
</html>
在内容脚本中,我们可以这样做:
$el = $("custom\\:header");
$el.html($("<h1>").text($el.attr("text")));
(我在这里使用 jQuery)。这会将我们的标签变成:
<custom:header text="header text">
<h1>header text</h1>
</custom:header>
您还可以为您的自定义标签注入一个 css 文件:
custom\:header {
color:red;
}
使用在文档类型中引用的自定义 DTD,例如使用的示例mymymy.dtd
:
<!DOCTYPE html SYSTEM "mymymy.dtd">
在将其上传到服务器之前,请注意利弊: