Internet Explorer中无法单击超链接区域

时间:2011-10-03 17:44:55

标签: asp.net css internet-explorer hyperlink

在下面的示例中,在Internet Explorer中无法单击“测试”一词,即使链接URL在页面底部悬停时显示,并且链接的区域在可怕的IE调试工具中准确表示(F12 )。这在所有其他浏览器中都可以正常工作(当然)。

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

我知道在超链接标签中嵌套表在技术上并不合适,但它确实是我想要完成的唯一实用方法,并且看到它在所有浏览器中如何正常工作,是否有办法获得它在IE工作?

到目前为止,我已尝试同时为表和链接提供高度,宽度以及内联块的显示属性。没有人工作过。感谢。

1 个答案:

答案 0 :(得分:5)

你说“看看它在所有浏览器中如何正常工作” - 但事实并非如此。在某些浏览器中实际发生的是他们正在努力使其发挥作用。

做这样的事情:

<table onclick="location.href='/'" style="cursor: hand;">
<tr><td>Test</td></tr>
</table>

也是一个黑客,但更有效。

<强>更新

如果您对爬虫有所了解,有两种可能的方法。一种是在之后添加一个链接,例如:

<table onclick="location.href='/'" style="cursor: hand;">
<tr><td>Test</td></tr>
</table>
<a href="/" style="display:none;">Test</a>

您还可以在文档的<link>中使用<head>标记,例如:

<link href="/" rel="section" />

或任何链接rel type都有意义。

此外,根据规范,您在问题中的HTML结构无效。就可靠和未来的工作而言,您的代码不符合条件。更加注重标准的代码将更加可靠地工作。

另一个更新

鉴于你的评论,这里是我如何构建这个,假设这样的标记:

<table class="dataTable">
    <tr>
       <td><img></td>
       <td>Description</td>
       <td><a href="/" class="details">Details</a></td>
    </tr>
</table>

您的详细信息链接代表您正在使用的链接,因此我要做的是添加这一点JavaScript(使用jQuery,但可以为您当前使用的任何库重写:

<script>
jQuery(function($){
  $('table.dataTable').delegate('td', 'click', function(){
    $(this).find('a.details').trigger('click');
  });
});
</script>