如何在 IE7 中使空的锚标记可点击?

Posted

技术标签:

【中文标题】如何在 IE7 中使空的锚标记可点击?【英文标题】:How to make an empty anchor tag clickable in IE7? 【发布时间】:2010-12-12 10:39:55 【问题描述】:

我需要在背景图像中创建一个可点击的区域,以生成供 javascript 使用的事件。因此,我创建了一个锚标记,并在其中插入了一些语义上无意义的标记之间的相关文本,然后将其隐藏:

<a href="#"><i>foo</i></a>

然后我给出了锚标记“display:block”的属性、宽度和高度值,并将它绝对定位在我需要它与背景图像相关的位置。在 Firefox 中,这很好用——我将鼠标悬停在上面,我的光标按预期改变了——我有一些可点击的东西。然而,IE7 不喜欢锚标记为“空”的事实,因此不将其视为可点击。所以我把这个添加到 css 中的锚标记中:

background:url(/no-image.jpg); 

...这似乎使 IE7 误以为那里有东西。 IE7 现在将该区域视为可点击区域,即使锚标记实际上不存在背景图像。但这对我来说似乎有点像黑客,我想知道是否有更优雅的方法来处理这个问题。任何想法将不胜感激。谢谢。

【问题讨论】:

IE8 也会出现这个问题。 复制好答案 ***.com/questions/6914822/…(在 cmets 中寻找 data:image 技巧) 【参考方案1】:

您发现 IE 存在渲染问题,根据@Simon 下面的说法,至少在 IE9 中问题仍然存在。

您的background: hack 将起作用,但浏览器每次都会发出 HTTP 请求以解析虚假 URL。这可能会损害您页面的性能。为了获得相同的结果但不发出不必要的 HTTP 请求,我建议改用此 URL:

background-image:url(about:blank);

about:blank 是一个特殊的 URL,浏览器显示为一个空白页面,因此它不会影响元素的显示方式,但也不会发出任何 HTTP 请求。

顺便说一句,只有当您有绝对或相对定位的 A 元素(或定位块内的 A 元素)时,才会出现问题。普通的非定位超链接在IE7下好像没有这个问题。

【讨论】:

你的意思是使用带有 target="_blank" 属性的锚标签吗? 不。我的意思是不要使用 IE 必须获取的背景图像的真实 URL。在您的 CSS 中使用 about:blank,这是一个不会导致 HTTP 请求的特殊 URL。你的 html 很好——问题纯粹是 CSS 相关的 是的,这个问题似乎在 IE 9 中仍然存在。你的技巧很有效,谢谢! 这很甜蜜。我打算使用古老的 1px 透明 gif,但这似乎更好。 @JustinGrant 你是我的英雄!谢谢你。我遇到了同样的问题,但情况略有不同。我通过 jQuery 将“按钮”(如热点)附加到没有任何内容的滑块中。只是绝对定位,显示具有宽度和高度的块。但是,在 IE 中,它们根本没有渲染。除非我添加了边框或指定了我不想要的背景颜色。但是您的解决方案非常有效!【参考方案2】:

去掉语义上无意义的标签,改用普通的 CSS 图像替换。

<a href="#">foo</a>

然后是 CSS:

a  
    width:100px; 
    height:100px; 
    display:block; 
    text-indent:-9999px; 
    background:url(/img.png) no-repeat;

添加您需要的任何定位,它应该可以正常工作。

【讨论】:

这是 *** 用于投票向上和向下投票的箭头。 :-) 有些人现在开始不鼓励使用它,转而支持旧的图像方法:google.co.uk/search?q=stop+using+css+image+replacement+text【参考方案3】:

改为使 DIV 可点击。如果它调用 JavaScript,则根本不需要锚标记。

如果需要,您可以绝对定位。

<div onclick="alert('moo')" style="height;100px;width:100px;cursor:pointer"></div>

【讨论】:

是的,我认为这行得通,但我之前应该提到的一件事是我想保留锚标签......有问题。【参考方案4】:

我最近在 IE9 及以下版本中遇到了一个问题,即锚标记周围的可点击区域不起作用。没有一个典型的解决方案对我有用。我发现的工作是将这种样式添加到 html 元素:

html 
position:relative;
z-index:-1001;

IE 中的 z-index 排序与其他浏览器中的不同。

【讨论】:

以上是关于如何在 IE7 中使空的锚标记可点击?的主要内容,如果未能解决你的问题,请参考以下文章

绝对定位的锚标记(没有文本)在 IE 中不可点击

SQL如何在升序排序时使空值排在最后

如何在 .net 中使类可序列化而无需 Serializable 属性

如何将 ClickableTextCell 渲染为 GWT CellTable 中的锚?

如何在 QTextEdit 中使链接可点击?

如何在 Forge Viewer 中使 Revit Room 可点击?