我想从输出中删除更多不必要的字节,而且它似乎可接受(在实践中)去掉可以添加的内容通过省略/折叠DOM元素属性之间的差距,从HTML标记中获得相当多的空白。
虽然我已经过测试和研究(两种情况都有一点),但我想知道安全会是怎样的?
我在 Chrome (43.0.2357.65 m)
, IE (11.0.9600.17801)
, FF (38.0.1)
和 Safari (5.1.7 (blah-di-blah))
他们似乎并不介意,也无法在The Specs中找到有关属性之间空格的具体信息。
w3.org's Validator抱怨,这强烈表明这不是安全,不应该有效,但是(总是#34) ;但是")只有当没有引号时,空间的要求才可能是严格的(出于显而易见的原因)。
另外(snippy但很尖锐):他们的SSL &#34;过时&#34; 并没有激发他们对意见的信心。< / SUP>
我还注意到someone's HTML compressor可以(在启用时)在属性值周围引用引号,其中这些值中没有空格(例如 id
),这意味着在至少大多数(如果不是全部)HTML解析都集中在等号的两侧(当然除了布尔值),并且在使用引号的地方,它们被认为是优先分隔符。
那么,会:
<!DOCTYPE html><html><body>
<a href="http://example.org"target="_blank"title="This is a test">Yabba Dabba Doo!</a>
</body></html>
&#13;
▲出现问题,如果出现问题,在哪种条件下?
还有什么其他原因可以在生产输出中保留这个空白(代码&#34;可读性&#34; 在这种情况下不是问题)?
虽然我基本上回答了我自己的问题,因为有一个规范来管理是否应该属性之间的空格,我仍然想知道在使用引用值时是否省略它们几乎可以被认为是安全,并希望得到关于这一点的反馈。
考虑到生产HTML中偶然可以省略空格的频率,以及我测试过的浏览器似乎不介意它们,我认为如果浏览器无法处理文档那将是非常罕见的省略这些空格。
虽然在几乎所有情况下都遵循规范是明智的,但这可能是一次作弊可能可接受?
毕竟 - 如果我们能魔法保存几百个字节而不影响输出质量,为什么不呢?
答案 0 :(得分:1)
事实证明我应该更加努力。我的坏。
根据these specs:
如果使用空属性语法的属性后跟另一个属性,则必须有一个空格字符将两者分开。
和
如果使用不带引号的属性语法的属性后跟另一个属性或上面的开始标记语法的步骤6中允许的可选U + 002F SOLIDUS字符(/),则必须有空格将两者分开的字符。
和
如果使用单引号属性语法的属性后跟另一个属性,则必须有一个空格字符将两者分开。
和
如果使用双引号属性语法的属性后跟另一个属性,则必须有一个空格字符将两者分开。
除非我错了(再次),否则意味着始终必须是属性之间的空格。
答案 1 :(得分:0)
您可以尝试使用http://www.whak.ca/minify/HTML.htm或http://www.scriptcompress.com/minify-HTML.htm等在线HTML缩略器(搜索谷歌了解更多信息),并找到他们更改的一些内容,以获取有关可以取出但仍呈现HTML代码的提示。
在第一个链接上您的代码:
<!DOCTYPE html><html><body><a href=http://example.org target=_blank title="This is a test">Yabba Dabba Doo!</a>
变成:
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_adjectives);
已经节省了18个字节......