我注意到jQuery可以创建并访问不存在/非标准的HTML标记。例如,
$('body').append('<fake></fake>').html('blah');
var foo = $('fake').html(); // foo === 'blah'
这会在某种验证中破裂吗?这是一个坏主意,还是有时候这是有用的?主要问题是,虽然可以做到,但是应该这样做吗?
提前致谢!
答案 0 :(得分:2)
HTML 就是这样允许您使用您喜欢的任何标记。浏览器对未知标签的反应可能不同(并且它们也不会对已知标签做出反应?),但一般的底线是他们忽略未知标签并尝试渲染其内容。
从技术上讲,没有什么能阻止你使用<fake>
元素(比较IE7对HTML5页面和那里定义的新标签的作用)。 HTML标准化一直是事后的过程。浏览器供应商发明了标签,并且在某些时候绘制了这条线,它被称为HTMLx。
真正的问题是,如果你肯定必须这样做。如果您关心W3C验证器是否喜欢您的文档。或者,如果您关心您的同事是否喜欢您的文档。
如果你能做到这一点并保持在标准范围内,那就不值得麻烦了。
答案 1 :(得分:1)
您可以使用非标准HTML标记,并且大多数浏览器都可以正常工作,这就是为什么您可以在不识别它们的浏览器中使用HTML5标记,而您需要做的就是告诉他们如何设置样式(特别是哪些标签显示:块)。但我不建议这样做有两个原因:首先它会破坏验证,其次你可能会使用一些标签,这些标签稍后会被添加到HTML中,然后你的页面会在新的浏览器中停止工作。
答案 2 :(得分:1)
我看到的最大问题是,如果你创建一个对你有用的标签,谁能说它有一天不会成为标准?如果发生这种情况,它可能会最终扮演一个角色或获得您没有预料到的样式,从而破坏您的代码。
答案 3 :(得分:1)
HTML的规则确实说如果通过脚本操作,结果在操作之前和之后都应该是有效的。
验证是达到目的的手段,所以如果它以某种方式对你有用,那么我不会过分担心它。也就是说,我不会在使用像facebook <fb:fan />
元素这样的东西时“偷偷”过去验证 - 我只是吮吸它并承认代码无效。
答案 4 :(得分:0)
真的没有理由做这样的事情。更好的方法是使用像
这样的类<p class = "my_class">
然后执行类似
的操作$('p.my_class').html('bah');
修改强>
使用假标签很糟糕的主要原因是因为它使您的HTML无效并且可能会在某些浏览器上搞砸您的页面呈现,因为他们不知道如何处理您创建的标签(尽管大多数将它视为某种DIV)。
这是不好的主要原因,它只会破坏标准并导致难以维护的代码混乱,因为您必须解释自定义标记的用途。
如果您确实决定使用自定义标记,则可以将网页设置为有效的XML文件,然后使用XSLT将XML转换为有效的HTML。但在这种情况下,我只是坚持上课。