2011-06-03 36 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