我正在尝试使用jQuery
格式化代码块,特别是在标记内添加
标记:
$(document).ready(function() { $("code").wrapInner(""); });
Firefox正确应用格式,但IE将整个代码块放在一行上.如果我添加提醒
alert($("code").html());
我看到IE已在pre标签中插入了一些额外的文字:
如果我重新加载页面,jQuery后面的数字会改变.
如果我使用
wrap()
而不是wrapInner()
,在外面包装
标签,IE和Firefox都能正确处理它.但是不应该在里面
工作吗?
我更喜欢使用,
wrapInner()
因为我可以在标签中添加一个CSS类来处理所有格式,但是如果我使用
wrap()
,我必须将标签中的页面格式化CSS和标签中的文本/字体格式
,或Firefox和IE都窒息了.这不是什么大不了的事,但我想尽量保持简单.
有人遇到过这种情况么?我错过了什么吗?
1> markpasc..:这是块和内联元素之间的区别.
pre
是块级元素.将其放在code
标签中是不合法的,标签只能包含内联内容.因为浏览器必须支持他们可能在真实网络上找到的任何神奇标签汤,Firefox会尝试做你的意思.IE碰巧以不同的方式处理它,这很好的规范; 在这种情况下的行为是未指定的,因为它永远不会发生.
你能代替取代了
code
与元素pre
?(由于块/内联问题,从技术上说,只有当元素位于具有"流"内容的元素内时才能工作,但浏览器可能会做你想要的.)
code
如果你想要pre
的话,为什么它首先是一个元素呢?您还可以使用CSS 为
code
元素pre
的空白保留功能white-space: pre
,但显然IE 6仅在严格模式下表示尊重.