【问题标题】:Putting a table inside a hyperlink - not working in IE将表格放在超链接中 - 在 IE 中不起作用
【发布时间】:2011-08-06 15:00:53
【问题描述】:

我在超链接中有一个表格:

<a href="/"><table><tr><td>...</td></tr></table></a>

在所有浏览器中,将鼠标悬停在表格上会将指针变为手形,并且通过一些 CSS 表格背景会改变颜色(因此看起来“突出显示”)。

但是,在 Internet Explorer 中,单击表格无效。在 Firefox 和 Chrome 中,它按预期遵循超链接。

如何让 IE 在点击时跟随链接?

【问题讨论】:

  • 您是否为表格尝试过 javascript onclick 事件?比如:onclick="javascript:window.location='/';" ?

标签: html internet-explorer hyperlink html-table


【解决方案1】:

您不能将块级元素嵌套在内联元素中并期望得到正确的结果(在此处插入引用)。

您可以在表格中添加一些 CSS 样式并应用 onclick 处理程序,使其像超链接一样发挥作用:

<table style="fakeLink" onclick="window.location = '/';">...

还有fakeLink 类:

.fakeLink
{
  color: blue;
  border-color: blue;
  cursor: pointer;
  text-decoration: underline; /* Not sure if this is possible. */
}

演示这两种技术的演示:http://jsfiddle.net/qNGrp/4/。我没有 IE,但我认为只有一个可以正常工作。

【讨论】:

  • 您可以在 HTML5 中围绕块级元素包装链接,但我认为您需要一个 polyfill 来向后兼容 IE。
  • HTML5 可以说比 HTML4 更容易 - 查看 HTML5 Boilerplate 以获得快速入门。
  • 我第一次看到 HTML5 是在这里:flask.pocoo.org。我就像“这件事如何验证?!?!??!”没有&lt;head&gt;,没有&lt;body&gt;,没有&lt;li&gt;s的结束标签。这很令人不安......
  • 是的 - 有些人有点过分了,为了它而使用 HTML5 语法,尽管它经常使它更加混乱。然而,就仅使用带有一些额外元素的 HTML4 以及现有元素的更多灵活性而言,它很棒。块元素周围的链接就是一个很好的例子。放置 &lt;nav&gt;&lt;aside&gt; 之类的也很棒,因为您将 CSS 应用于它们并且仍然具有 CSS ID 选择器的特异性。
  • 哦,是的,新标签选择很棒。我必须尽快打破我一贯的&lt;div&gt; 嵌套习惯!
【解决方案2】:

首先:在块级元素周围放置&lt;a&gt; 在 HTML5 中是有效的!在http://validator.w3.org/查看下面的代码

第二:任何 JavaScript 变通方法都会降低可访问性,因此这不是最好的做法 ;-)

我的解决方案:使用&lt;div&gt; 代替&lt;table&gt; - 如下所示:

<!DOCTYPE html>
<html>
<head>
<title>MSIE sucks!</title>
</head>
<body>
<a href="javascript:alert('Yeah!')">
<table>
<tr>
<td>&lt;table&gt; Doesn't work in Internet Explorer 8 :-(</td>
</tr>
</table>
<div style="display:table">
<div style="display:table-row">
<div style="display:table-cell">Solution: &lt;div style=&quot;display:table&quot;&gt;</div>
</div>
</div>
</a>
</body>
</html>

【讨论】:

    【解决方案3】:

    我已经设法为此找到了解决方案,它并不完美,但它确实有效:

    简化的 CSS:

    a{ display:inline-block; position:relative; }
    a:after{ content:''; position:absolute; top:0; left:0; width:100%; height:100%; background:url('x'); }
    

    简化的 HTML:

    <a href='http://dropthebit.com' target='_blank'>
        <table>
          <tr>
            <td>cell 1</td>
            <td>cell 2</td>
            <td>cell 3</td>
          </tr>
        </table>
    </a>
    

    Test page

    【讨论】:

      【解决方案4】:

      它不应该工作。 IE 在那里有正确的行为。表是块级元素;链接是内联元素。内联元素不能包含块级元素。

      如果你想点击你的元素来改变页面,你可能需要Javascript。不过,更改 CSS 应该不难::hover 伪选择器仍然适用于 table 元素。

      【讨论】:

      • 从逻辑上讲,这是一种有缺陷的互联网行为。很明显,互联网存在了将近 18 年,人们需要将整个表格包装在一个链接中。这是有道理的,这是一个非常有缺陷的设计,你不能在 IE 中做到这一点。
      猜你喜欢
      • 2014-03-25
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      • 2018-04-26
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      相关资源
      最近更新 更多