HTML的隐藏功能

Bin*_*ony 110 html xhtml language-features hidden-features

HTML是使用最广泛的语言(至少作为标记语言)尚未获得应有的信誉.
考虑到它已经存在了这么多年,诸如FORM/INPUT控件之类的东西仍然保持不变,没有添加新的控件.

至少从现有功能来看,您是否知道任何不为人所熟知但非常有用的功能.

当然,这个问题是这样的:

JavaScript的
隐藏功能隐藏的CSS
功能隐藏C#的
功能隐藏的VB.NET
功能隐藏的Java
隐藏功能隐藏的功能经典ASP
隐藏的ASP.NET
功能隐藏的Python
功能隐藏的TextPad
功能隐藏的Eclipse功能

不要提及HTML 5.0的功能,因为它在工作草案中

请为每个答案指定一个功能.

Pau*_*ish 244

使用与协议无关的绝对路径:

<img src="//domain.com/img/logo.png"/>
Run Code Online (Sandbox Code Playgroud)

如果浏览器通过HTTPS查看SSL中的页面,那么它将使用https协议请求该资产,否则它将使用HTTP请求它.

这可以防止IE中的"此页面包含安全和非安全项目"错误消息,将所有资产请求保留在同一协议中.

警告:当在<link>或@import上使用样式表时,IE7和IE8会下载文件两次.然而,所有其他用途都很好.

  • @Gumbo:是的,这是一个URI功能,但我认为它足以弯曲规则并包含在这里.而且我不希望很快就会出现URI Spec的隐藏功能.:) (44认同)
  • 这不是HTML功能,而是URL/URI功能. (29认同)
  • d03boy,它是相对于协议的相对路径. (9认同)
  • 有一个主要缺点:当文件保存到磁盘并使用`file:`协议访问时,浏览器将无法找到资源(例如,CDN或其他外部服务器). (5认同)
  • 一个斜杠是相对于域部分的,而不是来自协议部分 (2认同)
  • IE是如此令人难以置信的DUMB!为什么f***hell它DL文件两次? (2认同)

Bri*_*ter 138

label标签使用"for"属性在逻辑上将标签与表单元素链接起来.大多数浏览器将其转换为激活相关表单元素的链接.

<label for="fiscalYear">Fiscal Year</label>
<input name="fiscalYear" type="text" id="fiscalYear"/>
Run Code Online (Sandbox Code Playgroud)

  • 要扩展答案,还可以使用标签包装输入并省略for属性:<label>会计年度<input name ="fiscalYear"type ="text"/> </ label> (54认同)
  • 使用没有它的复选框和单选按钮应该是犯罪. (32认同)
  • 是的,很少有网站积极使用这个.我见过使用js的网站来做这个... (24认同)
  • cagdas,HTML中没有真正隐藏的功能,它是一个指定的标准. (4认同)
  • 最近发现了这个. (2认同)

ale*_*emb 136

(IE,Firefox和Safari)的contentEditable属性

<table>
    <tr>
      <td><div contenteditable="true">This text can be edited<div></td>
      <td><div contenteditable="true">This text can be edited<div></td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

这将使细胞可编辑!来吧,如果你不相信我,试试吧.

  • David Dorward,用HTML5引入它并不完全公平,因为MS在IE 5.5中引入了contentEditable,但是在HTML5之前它还没有被标准化.Tyson&Steve,contentEditable在版本2.0中被引入Safari,但许多重要的格式化方法直到3.x才被添加; Victor H Valle,取决于你的doctype.折叠后,HTML 4应将其扩展为="true". (15认同)
  • 你应该把它作为contenteditable ="true"恕我直言 (14认同)
  • 该问题需要HTML5未引入的功能 (7认同)
  • 现在有人可以说明这有用吗? (6认同)
  • @Binoj - 绝对不是."contenteditable属性是一个枚举属性,其关键字为空字符串,true和false" - http://www.w3.org/TR/html5/editing.html (4认同)
  • try it链接不会导致一个合适的例子 (2认同)
  • 更好的是,添加以下内容作为书签,以便编辑您正在使用的任何网页:javascript:document.body.contentEditable ='true'; document.designMode ='on'; void(0); (2认同)
  • 我认为它主要在javascript上下文中有用,你允许用户根据需要编辑一段代码,然后通过js提交该内容. (2认同)

Ric*_*dOD 102

我认为optgroup标签是人们不经常使用的一个功能.我与之交谈的大多数人都不会意识到它存在.

例:

<select>
  <optgroup label="Swedish Cars">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
  </optgroup>
  <optgroup label="German Cars">
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
  </optgroup>
</select>
Run Code Online (Sandbox Code Playgroud)

  • @eyelidlessness:我一直看到缩进元素或使用某种'header'文本的下拉列表,如`--- category ---`. (5认同)
  • 这是一个我不知道的简洁功能! (4认同)

Fen*_*ton 100

我最喜欢的是基本标签,如果你想使用路由或URL重写,它可以节省生命...

假设您位于:

www.anypage.com/folder/subfolder/
Run Code Online (Sandbox Code Playgroud)

以下是此页面中链接的代码和结果.

常规锚:

<a href="test.html">Click here</a>
Run Code Online (Sandbox Code Playgroud)

导致

www.anypage.com/folder/subfolder/test.html
Run Code Online (Sandbox Code Playgroud)

现在,如果你添加基本标签

<base href="http://www.anypage.com/" />
<a href="test.html">Click here</a>
Run Code Online (Sandbox Code Playgroud)

锚点现在导致:

www.anypage.com/test.html
Run Code Online (Sandbox Code Playgroud)

  • 您也可以使用带有斜杠的/images/image.png.:-) (48认同)
  • 基本标签是一个核选项 - 它相当于#define:如果你不跟踪它,让它对未来的开发人员非常清楚,并使它成为网站架构的一个非常低级别的部分,它可能导致令人沮丧非明显的错误.我从来没有*需要*这个,谨慎使用. (46认同)
  • 我发现这非常方便,我必须"查看源代码"并下载页面的HTML才能使用它.下载源后,可以添加具有相应href属性的BASE元素.这样,您只需下载源HTML即可在本地工作...无需下载所有javascript,css和图像. (17认同)
  • 请注意,基本URL应用于每个相对URL,而不仅仅应用于相对URL路径.因此,引用"#top"将在根索引文档中解析为"top",并在同一文档中解析为"top". (4认同)
  • 是的,在尝试将CS​​S文件动态加载到页面时,我也看到基本标记干扰了我的JavaScript.此外,IE6中的错误要求您显式关闭标记(</ base>),这是无效的.有条件的评论可以帮助你. (2认同)

Dan*_*ira 99

<img onerror="{javascript}" />
Run Code Online (Sandbox Code Playgroud)

onerror 是一个JavaScript事件,将在显示小红十字(在IE中)图片之前触发.

您可以使用它来编写一个脚本,用一些有效的替代内容替换损坏的图像,这样用户就不必处理红叉问题.

乍一看,这可以被视为完全没用,因为,如果图像首先可用,您以前不知道吗?但是,如果你考虑,这个东西有完美的有效应用; 例如:假设您正在从您无法控制的第三方资源提供图像.就像我们在SO中的gravatar ...它来自http://www.gravatar.com/,这是stackoverflow团队根本无法控制的资源 - 尽管它是可靠的.如果http://www.gravatar.com/发生故障,stackoverflow可以通过使用来解决此问题onerror.

  • 是的,像404这样的错误代码会触发事件. (5认同)
  • 我有一个numpty使用这一个,指向一个不存在的图像,递归任何人??? (2认同)

Rus*_*Cam 96

<kbd>用于标记键盘输入的元素

Ctrl+ Alt+Del

  • 默认情况下没有任何东西,但使用CSS标记元素更清晰,就像SO一样. (3认同)

Mar*_*rie 85

<blink>
Run Code Online (Sandbox Code Playgroud)

必须用于网站上的任何重要内容.最重要的网站将所有内容包装成闪烁.

<marquee>
Run Code Online (Sandbox Code Playgroud)

创造逼真的滚动效果,非常适合电子书等.

编辑:Easy-up fellas,这只是一种幽默的尝试

  • 也许这个问题应该指明你不应该列出我们想要*保持*隐藏的功能. (62认同)
  • ...我使用了<blink>,作为显示代码的div的伪终端样式的一部分(:{before:"drthomas @ house:〜$";}:在{content:"_"之后; text -decoration:blink;} ...太棒了.我应该寻求帮助.=] (12认同)
  • 请.<blink>的唯一合法用途是:Schroedinger的猫是<blink>而不是</ blink>死了.(我以为这是在xkcd上,但我现在找不到它.) (3认同)
  • 我觉得好笑 (2认同)
  • <marquee> <blink>史上最烦人的HTML标签!!! </ blink> </ marquee>这些都没有隐藏它们只是因为某种原因而没有被使用. (2认同)
  • 我将整个页面包裹在Marquee和Blink中,因为我很酷 (2认同)

ale*_*emb 84

不太知名,但您可以指定lowsrc将显示lowsrc加载src图像的图像:

<img lowsrc="monkey_preview.png" src="monkey.png" />
Run Code Online (Sandbox Code Playgroud)

对于那些不喜欢隔行扫描图像的人来说,这是一个不错的选择.

一点点琐事:有一点这个属性是模糊不清的,它被用来利用Hotmail,大约2000年.

  • 但这个属性是专有的.http://msdn.microsoft.com/library/ms534138(VS.85).aspx (27认同)
  • 自HTML4以来,该属性已被弃用 - 您不应在生产网站中使用它. (17认同)
  • 我在Opera中通过"利用Hotmail"链接收到欺诈警告.:○ (2认同)
  • 这是一个安全网站,它是安全的. (2认同)

Gum*_*mbo 67

DELINS标记已删除和插入的内容:

HTML <del>sucks</del> <ins>rocks</ins>!
Run Code Online (Sandbox Code Playgroud)

  • 绝对不够用. (10认同)
  • @Horus:确定你可以找到用途,但是在宏观方案中仍然没有大量的情况. (3认同)
  • @eyelidlessness:没有足够的情况下标记删除/插入的文本是有用的. (2认同)
  • 我可以发誓StackOverflow在Revisions页面上使用了`<ins>`和`<del>`了一段时间,但是现在它使用`<span class ="diff-add">`和`<span class =" DIFF-删除">`.:( (2认同)

ale*_*emb 58

按钮的标签是新的input submit标签,很多人仍然不熟悉它.例如,按钮中的文本可以使用按钮标签进行样式设置.

<button>
    <b>Click</b><br />
    Me!
</button>
Run Code Online (Sandbox Code Playgroud)

将呈现一条带有两条线的按钮,第一条用粗体表示" Click ",第二条用"Me!"表示.在这里试试吧.

  • 关于它在IE <8中被破坏的耻辱.可以解决这些问题,但这可能很痛苦,有时你会遇到在Web服务器和服务器端编程环境之间运行的安全保护. (15认同)
  • 但IE <8将提交元素的内容,而不是其值.我相信有些版本会将它视为一个成功的控件(即使它没有被点击). (6认同)
  • 如果您使用<button contenteditable>,您也可以更改按钮文本!指向任何能够找到有效用途的人.:) (4认同)
  • 我从来不明白为什么会有"输入"类型的提交.它没有输入任何东西,只是提交你在其他领域输入的内容. (4认同)
  • @DisgruntledGoat:实际上会发送它的名称/值对.如果表单中有多个按钮(例如编辑,删除,移动等)并希望区分按下的按钮,则非常有用.不幸的是,同样的效果不适用于IE <8中的`button`,它惊人地发送了所有`button`元素的名称/值对. (3认同)

Bin*_*ony 56

指定要打印的CSS

<link type="text/css" rel="stylesheet" href="screen.css" media="screen" />
<link type="text/css" rel="stylesheet" href="print.css"  media="print" />
Run Code Online (Sandbox Code Playgroud)

  • 不是真的隐藏了imo. (41认同)

Jeh*_*iah 54

这些<dl> <dt><dd>项目经常被遗忘,它们代表定义列表,定义术语和定义.

它们的工作方式类似于无序列表(<ul>),但它不是单个条目,而是更像是键/值列表.

<dl>
  <dt>What</dt><dd>An Example</dd>
  <dt>Why</dt><dd>Examples are good</dd>
</dl>
Run Code Online (Sandbox Code Playgroud)

  • 经常被遗忘的更有趣的事情是格式是键/值/值/值/值/键/值 (18认同)
  • 默认的演示文稿不是那么好,但是人们忘记了可以使用CSS为元素设置多种方式. (2认同)

ann*_*ata 52

没有完全隐藏,但(这是IE的错)没有足够的人知道thead,tbody,tfoot为我的口味.有多少人知道tfoot应该出现在标记之上

  • 它们对于打印非常有用,因为它应该将`thead`和`tfoot`放在每页的顶部和底部.遗憾的是,当你有很长的桌子时,没有机制可以在浏览器中重复`thead`. (9认同)
  • @Anthony:如果您的连接速度很慢,则有意义,这意味着您可以在表内容仍在加载时查看所有页眉和页脚. (3认同)
  • 如果IE5正确实施了TBODY,那么更多人会使用它.这是几年前的主要问题.Mozilla和Opera支持滚动TBODY这真的很酷; 不幸的是,IE5没有. (2认同)

ale*_*emb 50

wbr字断标签.来自Quirksmode:

(分词)表示:"浏览器可以在此处插入换行符,如果愿意的话." 它浏览器不认为必要的换行没有任何反应.

<div class="name">getElements<wbr>ByTagName()</div>
Run Code Online (Sandbox Code Playgroud)

我给浏览器提供了添加换行符的选项.当桌子有足够的空间时,对于非常大的分辨率,这不是必需的.然而,在较小的分辨率上,这种策略性放置的换行符使得表格不会比窗口大,从而导致水平滚动条.

还有&shy;在同一页面上提到的HTML实体.这是相同的,wbr但是当插入一个中断时,-会添加一个hypen()来表示中断.有点像它是如何在印刷中完成的.

一个例子:

TextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextText

  • "IE8作为IE8"不支持它,它在Safari 3.0 for Windows中有问题.除了支持是非常好的.请参阅链接中的兼容性图表. (7认同)
  • 要小心,因为这个浏览器支持不佳 (2认同)

bel*_*bob 43

一个未被充分利用的特征是,几乎每个在页面上提供可见内容的元素都可以具有"标题"属性.

添加这样的属性会导致当鼠标"悬停"在元素上时出现"工具提示",并且可以用于以不会导致页面过于拥挤的方式提供非必要但有用的信息.(或者它可以是一种向已经拥挤的页面添加信息的方式)

  • title属性很有用,但只有在适当使用时才有用.大多数浏览器只会在工具提示消失之前将其呈现几秒钟.当设计师觉得需要用3或4行文本填充title属性时,我讨厌它,导致你必须将鼠标移开,然后再次鼠标以阅读剩下的部分. (8认同)
  • 出现的工具提示是特定于浏览器的.并非所有浏览器都会显示相同的title属性.但这是一个很好的功能,我当然使用. (6认同)

Bin*_*ony 38

将多个html/css类应用于一个标记.这里的帖子相同

<p class="Foo Bar BlackBg"> Foo, Bar and BlackBg are css classes</p>
Run Code Online (Sandbox Code Playgroud)

  • 哇!我简直无法克服人们发现这是一个"隐藏"功能的事实.男孩我觉得发布一些"真正隐藏"的功能是愚蠢的,因为那些支持这个功能的人可能甚至都不会接近延伸DTD意味着什么. (36认同)
  • 这些是HTML类,而不是CSS类.CSS没有类(它有类选择器).HTML类对CSS以外的东西很有用. (22认同)
  • d03boy,p.foo,p.var与p.foo.bar不同.前者选择具有类"foo"或"var"的任何段落,后者选择具有两个类的段落. (5认同)
  • 关于HTML类的事情是一个好点,因为它带给我一个点 - html不应该让你知道css ..你应该能够创建html,并将它传递给一个可以实现他们的设计的设计师需要更改html(不完全是这样;))..所以这归结为你的命名和你使用类的方式..不要创建类来定位css属性..使用类来识别元素'是什么". (5认同)

ale*_*emb 34

我们都知道DTD或文档类型声明(使用W3C验证器使页面失败的那些).但是,可以通过声明自定义元素的属性列表来扩展DTD.

例如,由于添加到标记,W3C验证器将因此页面失败.但是,你可以这样做:behavior="mouseover"<p>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
[
<!ATTLIST p behavior CDATA #IMPLIED>
]>
Run Code Online (Sandbox Code Playgroud)

有关QuirksMode上的自定义DTD的更多信息,请参阅.

  • 当然,这使它"有效:您的自定义标记语言"而不是"XHTML 1.0 Transitional" (10认同)
  • +1.我不知道为什么这是-1.无论如何应该注意浏览器支持几乎为零. (3认同)
  • @eyelidlessness它只适用于XHTML.在以文本/ HTML格式发送的伪装XHTML中不起作用. (2认同)
  • Eesh,不是这个的粉丝.对我而言,HTML的价值在于,地球上的每个人都知道它的含义(或多或少),因为我们都使用相同的标签和属性.我不确定为什么`class`属性没有足够的可扩展性. (2认同)

Xin*_*nus 28

我们可以将base 64编码的字符串指定为image,JavaScript,iframe,link的source/href属性

例如

<img alt="Embedded Image" width="297" height="246" 
  src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASkA..." />

div.image {
  width:297px;
  height:246px;
  background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASkA...);
}

<image>
  <title>An Image</title>
  <link>http://www.your.domain</link>
  <url>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASkA...</url>
</image>

<link rel="stylesheet" type="text/css"
  href="data:text/css;base64,LyogKioqKiogVGVtcGxhdGUgKioq..." />

<script type="text/javascript"
  href="data:text/javascript;base64,dmFyIHNjT2JqMSA9IG5ldyBzY3Jv..."></script>
Run Code Online (Sandbox Code Playgroud)

参考

如何使用HTML标记构建图像?

二进制文件到Base64编码器/转换器

  • 可悲的是,IE <8不支持这一点.但是,您可以使用MHTML代替这些浏览器:http://www.phpied.com/mhtml-when-you-need-data-uris-in-ie7-and-under/ (4认同)

Mic*_*rek 26

我最近发现了fieldset和label标签.如上所述,不是隐藏但对表单有用.

<fieldset>解释

例:

<form>
  <fieldset>
    <legend>Personalia:</legend>
    Name: <input type="text" size="30" /><br />
    Email: <input type="text" size="30" /><br />
    Date of birth: <input type="text" size="10" />
  </fieldset>
</form>
Run Code Online (Sandbox Code Playgroud)

  • 不知道这一个.继承W3c规范:http://www.w3.org/TR/html401/interact/forms.html#h-17.10 (2认同)

Zac*_*ach 25

您可以使用object标记而不是iframe在页面中包含其他文档:

<object data="data/test.html" type="text/html" width="300" height="200">
  alt : <a href="data/test.html">test.html</a>
</object>
Run Code Online (Sandbox Code Playgroud)

  • 最终工作几乎完全像iframe,除了支持不太好和功能较少. (57认同)
  • 在HTML 5中不推荐使用iframe. (12认同)

Jus*_*son 25

<optgroup>是一个很棒的人,人们在做分段<select>列表时经常会错过.

<select>
  <optgroup label="North America">
    <option value='us'>United States</option>
    <option value='ca'>Canada</option>
  </optgroup>
  <optgroup label="Europe">
    <option value='fr'>France</option>
    <option value='ir'>Ireland</option>
  </optgroup>
</select>
Run Code Online (Sandbox Code Playgroud)

是你应该使用而不是

<select>
  <option value=''>----North America----</option>
  <option value='us'>United States</option>
  <option value='ca'>Canada</option>
  <option value=''>----Europe----</option>
  <option value='fr'>France</option>
  <option value='ir'>Ireland</option>
</select>
Run Code Online (Sandbox Code Playgroud)


Bal*_*usC 25

大多数人也没有意识到你可以通过给它们一个名字/值对来区分按下的表单按钮.例如

<form action="process" method="post">
     ...
     <input type="submit" name="edit" value="Edit">
     <input type="submit" name="delete" value="Delete">
     <input type="submit" name="move_up" value="Move up">
     <input type="submit" name="move_up" value="Move down">
</form>
Run Code Online (Sandbox Code Playgroud)

在服务器端,然后可以通过仅检查与按钮名称相关联的请求参数的存在来获得按下的实际按钮.如果不是null,则按下按钮.

我已经看到了大量不必要的 JS黑客/解决方法是,例如,改变的形式作用或改变一个隐藏的输入值预先根据按下的按钮.这简直令人惊讶.

此外,我已经看到几乎一样多的JS hacks/workarounds来收集多个复选框中的已检查的复选框,如表行中.在每次选择/检查表行时,JS会将行索引添加到隐藏输入元素中的某个逗号分隔值,然后在服务器端进一步分割/解析.这是因为没有意识到您可以为多个输入元素赋予相同的名称但是具有不同的值,并且您仍然可以在服务器端将它们作为数组访问.例如

<tr><td><input type="checkbox" name="rowid" value="1"></td><td> ... </td></tr>
<tr><td><input type="checkbox" name="rowid" value="2"></td><td> ... </td></tr>
<tr><td><input type="checkbox" name="rowid" value="3"></td><td> ... </td></tr>
...
Run Code Online (Sandbox Code Playgroud)

不知情会给每个复选框一个不同的名称,并省略整个值属性.在一些JS-hack/workaround-free情况下,我还在服务器端代码中看到了一些不必要的神奇魔法来区分已检查的项目.

  • 这不是非常友好的. (2认同)

Çağ*_*kin 22

Colgroup标签.

<table width="100%">
    <colgroup>
        <col style="width:40%;" />
        <col style="width:60%;" />
    </colgroup>
    <thead>
        <tr>
            <td>Column 1<!--This column will have 40% width--></td>
            <td>Column 2<!--This column ill have 60% width--></td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Cell 1</td>
            <td>Cell 2</td>
        </tr>
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

  • 根据我的经验,colgroup支持充其量只是片状. (15认同)

moo*_*moo 18

如果未指定标记的for属性<label>,则将其隐式设置为第一个子项<input>,即

<label>Alias: <input name="alias" id="alias"></label>
Run Code Online (Sandbox Code Playgroud)

相当于

<label for="alias">Alias:</label> <input name="alias" id="alias">
Run Code Online (Sandbox Code Playgroud)

  • 你在两个方面都错了:这是有效的做法,结束标签是禁止输入元素的. (5认同)
  • 但这比浏览器支持的内容少于for属性 (4认同)
  • @David - 你有任何文件要支持吗?我认为我从未见过浏览器不支持此用法.我亲自在IE6/7,FF2/3,Safari 3和Chrome 1/2中进行了测试.我没有在Opera中测试自己,但如果它不起作用我会感到非常惊讶.此行为是原始HTML 4.0规范的一部分,最初发布于11年前:http://www.w3.org/TR/1998/REC-html40-19980424/interact/forms.html#adef-for (4认同)

Wad*_* M. 15

按钮作为链接,没有JavaScript:

您可以在表单操作中放置任何类型的文件,并且您有一个充当链接的按钮.无需使用onclick事件等.您甚至可以通过在表单中​​粘贴"目标"来在新窗口中打开文件.我没有在应用程序中看到这种技术.

替换它

<a href="myfile.pdf" target="_blank">Download file</a>
Run Code Online (Sandbox Code Playgroud)

有了这个:

<form method="get" action="myfile.pdf" target="_blank">
    <input type="submit" value="Download file">
</form>
Run Code Online (Sandbox Code Playgroud)

  • 按钮不会有"将文件另存为"选项,这可能是不喜欢Adobe Acrobat接管其浏览器的用户所需要的. (27认同)
  • @UpTheCreek一些Web应用程序希望看起来与操作系统相同.例如,用户使用Windows时的丑陋按钮,以及用户使用Mac OS X时的漂亮按钮. (2认同)

Bin*_*ony 13

在X秒内刷新页面的最简单方法 - META Refresh

<meta http-equiv="refresh" content="600">
Run Code Online (Sandbox Code Playgroud)

内容中的值表示您希望页面刷新的秒数.
[编辑]

<meta http-equiv="refresh" content="0; url=foobar.com/index.html">
Run Code Online (Sandbox Code Playgroud)

做一个简单的重定向!
(谢谢@rlb)

  • 当然,确定哪些元素需要刷新然后通过AJAX更新它们会带来更好的用户体验...... (13认同)
  • META刷新在用户表单活动之王的页面中没有做任何好处,因为它可以中断用户的表单填写并丢弃所有工作.我认为很少有这种刷新最好的场合.这只是通常的简单方法. (11认同)
  • /我讨厌像那样刷新的页面......应该被禁止= / (11认同)
  • 如果设置为略小于会话超时以通知用户其会话已超时并已被删除,则此功能也很有用. (3认同)
  • Upvoted.因为我不知道这个.:) (2认同)

Kor*_*nel 12

<html>,<head><body>标签都是可选的.如果省略它们,解析器将在适当的位置静默插入它们.在HTML中这样做是完全有效的(就像暗示一样<tbody>).

理论上 HTML 是SGML应用程序.这可能是最短的有效 HTML 4文档:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<title//<p/
Run Code Online (Sandbox Code Playgroud)

除W3C Validator外,上述功能无效.但是,最短的有效HTML5 text/html文档无处不在:

<!DOCTYPE html><title></title>
Run Code Online (Sandbox Code Playgroud)

  • 你应该小心你的广告.上面的代码将在w3c验证器上通过4次警告验证,但DocType是HTML 4.0.HTML 4是SGML的后代非常简洁,因此维护了这个松散的验证标准,但是如果你将DTD改为XHTML 1.0 STRICT,它会得到15个错误,这几乎等于字符数.开发XHTML是因为HTML非常懒(因此不安全)所以我们不想再利用它了. (4认同)
  • 如果您将HTML/SGML文档的DOCTYPE更改为XHTML/XML,您将获得无意义的混合.这很明显,我不确定你为什么指出这一点. (3认同)
  • 从技术上讲,此示例可能是有效的HTML 4,但浏览器不支持缩写的SGML语法.以下是最短的有效HTML 5文档,浏览器确实支持这些文档:`<!DOCTYPE html> <title> </ title>` (3认同)

Eri*_*ärd 11

lang属性不是众所周知但非常有用.该属性用于标识整个文档或单个元素中内容的语言.Langage代码以ISO 2字母语言代码给出(即英语为'en',法语为'fr').

它对于可以调整引号等显示的浏览器很有用.屏幕阅读器也可以从lang属性和搜索引擎中受益.

Sitepoint对该lang属性有一些很好的解释.

例子

指定整个文档的语言为英语,除非被langDOM中较低级别的其他属性覆盖.

<html lang="en">
Run Code Online (Sandbox Code Playgroud)

将以下段落中的语言指定为瑞典语.

<p lang="sv">Ät din morgongröt och bli stor och stark!</p>
Run Code Online (Sandbox Code Playgroud)


Xn0*_*v3r 10

"!DOCTYPE"声明.不要认为这是一个隐藏的功能,但它似乎并不为人所知,但非常有用.

例如

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd">
Run Code Online (Sandbox Code Playgroud)

  • 更不用说"对于大多数当前的标记语言是强制性的,没有一个是不可能可靠地验证文档"... http://validator.w3.org/docs/help.html#faq-doctype (10认同)
  • 并且使用严格的doctype修复了95%的浏览器不一致性. (6认同)
  • 99%的开发人员使用的标准部分并不像"隐藏功能". (3认同)

zne*_*eak 6

这与HTML很少有关,但很少有人知道.

人们滥用<meta>标签的http-equiv属性:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta http-equiv="Refresh" content="5; url=somewhere/"/>
Run Code Online (Sandbox Code Playgroud)

但是,许多开发人员甚至不知道这是做什么的.该http-equiv属性意味着标记用于在您无法控制它们的情况下替换HTTP标头.因此,大部分工作都http-equiv应该在服务器端完成.

此外,它没有那么强大:文档的几个属性不能通过<meta>标签更改.Content-Type<meta>标记中可以告诉浏览器使用某个字符集,但大多数会忽略对文档的MIME类型的任何更改(因此您不能使text/html文档成为application/xhtml+xml那样).

示例中的两个标记都应该被这些简单的调用替换:

<?php
header('Content-Type: text/html; charset=UTF-8');
header('Refresh: 5; url=somewhere/');
?>
Run Code Online (Sandbox Code Playgroud)

它必须适用于任何符合HTTP标准的浏览器(这意味着,几乎每一个浏览器).


小智 5

上标 <sup> x </sup>