使用直接HTML标记而不是div.class

时间:2011-02-28 10:14:11

标签: html cross-browser

我的博客网站上有一些特殊的标签需要尽可能简单,以便我对HTML一无所知的大学可以使用它。例如

<question>...</question>

<answer>...</answer>

然后这些在CSS中设置样式。 HTML-idiots比使用<div class="answer">...</div>格式要容易得多。

我刚刚发现IE8显示错误,而Firefox和Chrome做得对。是预期还是我做错了什么?你知道有什么黑客可以解决这个问题吗,因为我需要手动更改大量的博客帖子!

5 个答案:

答案 0 :(得分:2)

我不知道这个答案是否符合您的需求,但使用自定义HTML标签的imho基本上是不使用 HTML。因此缺乏相容性。 如果你需要用HTML渲染数据,使用XML + XSLT会不会更好?

您可以在w3schools

上找到指南

答案 1 :(得分:2)

您想要创建<question>...</question>等。

这些不是HTML(甚至不是HTML5),您很难让浏览器可靠地理解它们。

可能对您有帮助的快速提示:

你说你已经在除了IE之外的所有浏览器中都能使用它。如果是这样,你可能会破解IE以使其工作,使用类似于HTML5Shiv这样的黑客技术,这些技术被用来让IE使用新的HTML5标签。这些使用Javascript来创建具有新标记名称的DOM元素,之后IE突然开始将该标记识别为有效的HTML。

它可能会起作用。但要注意它是一个黑客,它只针对IE。而且由于您使用的是非标准标签,因此即使它们现在正常运行,您也无法知道将来会破坏浏览器会发生什么。 (事实上​​,我会说更糟糕的情况是,如果你发明的其中一个标签在以后添加到HTML标准中,那么你会开始得到奇怪的布局故障,因为它会被添加到默认值样式表)

如果你能以这种方式工作,那么做得好。但是请考虑自己警告说这不是好习惯。

您实际要求的不是HTML,而是XML标记。这非常好,但不应该像你希望的那样直接放入网页。

有许多记录良好的方法可以将原始XML代码放入浏览器中。

一种选择是使用XSL将其转换为有效的HTML。另一种方法是将其加载到Javascript中的DOM对象中并使用脚本处理它。 (这是'X'出现'Ajax'的地方。)

我的猜测是,一个简单的XSL转换可以帮到你。 (事实上​​,听起来你的用例可能很简单,即使只是基本的字符串替换也可能足以获得相同的最终结果)。您可以使用<whatever> <tags> <they> <want>让您的同事创建代码,并编写一个脚本来解析它并在将其合并之前将其转换为常规HTML页面的其余部分。

从长远来看,这可能是一个比我上面描述的黑客更好的解决方案。

希望有所帮助。

答案 2 :(得分:1)

您无法添加类似的新元素。 HTML有一些浏览器可以理解的固定元素,但是如果你自己添加,浏览器就不知道如何处理它们。

HTML5有一些你可能会觉得有用的新元素:http://www.w3schools.com/html5/html5_new_elements.asp但是如果没有某种类型的javascript来解决问题,这对旧的浏览器不起作用。例如http://remysharp.com/2009/01/07/html5-enabling-script/

但是,如果你真的想添加新标签,可以这样做,然后通过javascript将它们“修改”为已知标签(实际上它是IE的html5启用脚本所做的),但它不会可以轻松地将CSS应用于新标签。

简而言之,我强烈建议不要添加新标签。理解像<div class="answer">这样的东西并不难。

答案 3 :(得分:1)

听起来您想要使用XSLT编写XML并转换为HTML。 This是一个旧教程(包括定义DTD),但进一步的网络搜索将获得更多可能适合的结果

答案 4 :(得分:0)