2012-11-30 51 views
7

我試圖在使用jQuery的元素上設置aria-autocomplete屬性。但是,當IE10運行在IE5怪癖模式IE7標準模式它會產生Member not found錯誤。IE10中的ARIA屬性

<input type="textbox" id="test" />​ 
$('#test').attr({"aria-autocomplete": "list"});​ 

查看此jsFiddle的演示。

我曾嘗試過各種其他ARIA屬性如下定義:

HTML 5: The Markup Language (ARIA Edition)

一些產生相同的錯誤,有的則沒有。

我無法在IE9中重現錯誤。

這是IE10中的錯誤嗎? jQuery的?或者還有其他一些原因,我不理解?

+0

jQuery不支持quirks模式。我不確定IE10中的IE7標準模式。我得看看那個。 –

回答

11

POZ,

這是瀏覽器IE10一個已知的錯誤時在兼容模式。請將此錯誤票上投票,以增加它將被修復的可能性。 https://connect.microsoft.com/IE/feedback/details/774078這張票是由jQuery團隊提交的。

您是否在真實的IE7中試過了您的代碼示例?我用browserstack(WinXP/IE7)試過了你的jsFiddle,這個例子沒有出錯。

如果您使用兼容模式來模擬測試IE7,那麼好消息是使用本機IE7工作得很好。壞消息是IE10兼容模式存在一個錯誤。

+0

謝謝以利亞。我已經提高了bug。我只使用IE10開發工具測試IE7,所以應該沒問題。 –

+0

@Elijah_Manor - 該鏈接已損壞。你願意請提供另一個,以便我可以放棄它。?謝謝 – johntrepreneur

+0

@johntrepreneur - 鏈接不被破壞。如果您看不到它,您需要在網站上註冊並加入IE反饋計劃。對jQuery bug的評論使你看起來只需要註冊。 – BStruthers

0

這是我的解決方案。 jQuery中的版本,您使用的,在我的CAS(jquery-1.7.2.js)周圍有行2764一個部分是這樣的:

// Use this for any attribute in IE6/7 
// This fixes almost every IE6/7 issue 
nodeHook = jQuery.valHooks.button = { 
    get: function(elem, name) { 
     var ret; 
     ret = elem.getAttributeNode(name); 
     return ret && (fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified) ? 
      ret.nodeValue : 
      undefined; 
    }, 
    set: function(elem, value, name) { 
     // Set the existing or create a new attribute node 
     var ret = elem.getAttributeNode(name); 
     if (!ret) { 
      ret = document.createAttribute(name); 
      elem.setAttributeNode(ret); 
     } 
     return (ret.nodeValue = value + ""); 
    } 
}; 

Acoording到https://bugs.jquery.com/ticket/12577,它在IE7模式IE10的相容表象的問題。解決方法是在set函數中更改返回變量:

return (ret.nodeValue = value + ""); 
//for: 
elem.setAttribute(name, value + ""); 
return (ret.value); 
相關問題