2011-06-03 45 views
0

area标记上的nohref属性会导致将图像明确从图像映射中排除。它可以在IE 6-7中工作,因为您可以看到鼠标悬停在标记为这样的区域上时没有更改。矩形有一个“nohref”,蓝色圆圈没有。如何测试IE6/7中是否存在“nohref”属性?

http://jsfiddle.net/ZNMEC/7/

不过,我想不出任何办法在Javascript,在IE 6的工作& 7. getAttribute总是返回false的属性是否存在或不编程测试它。 jQuery .attr也不起作用。

回答

2

通过XHTML standard,nohref属性应该写为nohref="nohref"。如果你这样做,你可以很容易地测试它,因为.attr('nohref')将返回字符串"nohref"

但是,此属性是不再支持HTML5。从W3C working draft

area元素上的nohref属性已过时。省略href属性就足够了。

因此,您可以通过if($('area').attr('href')){ /* href is set */ }进行测试。

+0

我希望能够普遍地使这项工作成为可能。不过,如果在IE6/7中没有解决这个问题的话,我想我最终可能会这么做。 – 2011-06-03 17:09:56

+1

我认为这是处理这个问题的正确方法,例如测试是否存在“href”。即使在以前的规范中'nohref'不应该与'href'同时出现,所以我通过查找nohref来处理的内容无论如何都是无效的标记。 – 2011-06-06 13:54:29

2

要选择area元素与nohref属性可以使用属性等于符号:

$('area[nohref]'); 

为了证明这一点正在使用:

alert($('area[nohref]').length); 

JS Fiddle demo

参考:

+0

在IE6或7中不起作用,这就是问题的本质。 – 2011-06-03 17:08:17

+0

@jamietre:您是否检查过以确保代码中没有任何JavaScript错误(并且,如果有的话,是否可以将错误编辑为您的问题)?我没有IE来测试,但我不明白为什么这个*不会工作(当然,除了IE通常的弱点和困难之外)。 – 2011-06-03 20:44:34

+0

看看小提琴 - 它确实不能简单一些。 IE6-7 getAttribute似乎并不认可nohref。将你喜欢的任何其他随机(无效)属性添加到区域元素,并尝试选择它,它会起作用。 jQuery也使用它(同样,选择器不起作用,因为sizzle会选择IE6-7并最终使用getAttribute) – 2011-06-03 21:55:34