2012-11-30 23 views
7

Tôi đang cố gắng đặt thuộc tính aria-autocomplete trên một phần tử bằng jQuery. Tuy nhiên, khi IE10 đang chạy ở chế độ IE5 Quirks hoặc Chế độ chuẩn IE7 nó sẽ tạo ra lỗi Member not found.Thuộc tính ARIA trong IE10

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

Xem này jsFiddle để xem bản trình diễn.

Tôi đã thử nhiều ARIA các thuộc tính khác theo quy định ở đây:

HTML 5: The Markup Language (ARIA Edition)

Một số sản xuất lỗi tương tự, một số khác thì không.

Tôi không thể tạo lại lỗi trong IE9.

Đây có phải là lỗi trong IE10 không? jQuery? Hay có lý do nào khác cho điều này mà tôi không hiểu?

+0

jQuery không hỗ trợ chế độ quirks. Tôi không chắc về chế độ tiêu chuẩn IE7 trong IE10. Tôi sẽ phải nhìn vào đó. –

Trả lời

11

POZ,

Đây là một lỗi được biết đến trong trình duyệt IE10 khi ở chế độ tương thích. Vui lòng bỏ phiếu bầu này để tăng khả năng nó sẽ được sửa. https://connect.microsoft.com/IE/feedback/details/774078 Vé được gửi bởi nhóm jQuery.

Bạn đã thử mẫu mã của mình trong IE7 thực chưa? Tôi đã thử jsFiddle của bạn với browserstack (WinXP/IE7) và ví dụ làm việc mà không có lỗi.

Nếu bạn đang sử dụng chế độ tương thích để mô phỏng thử nghiệm IE7, thì tin tốt là sử dụng IE7 gốc hoạt động tốt. Tin xấu là có lỗi trong chế độ tương thích IE10.

+0

Cảm ơn Elijah. Tôi đã upvoted lỗi. Tôi chỉ thử nghiệm IE7 bằng cách sử dụng các công cụ dev của IE10 vì vậy mà nên được ok sau đó. –

+0

@Elijah_Manor - liên kết đó bị hỏng. Bạn có phiền không vui lòng cung cấp một cái khác để tôi có thể upvote nó.?.? Cảm ơn – johntrepreneur

+0

@johntrepreneur - Liên kết không bị hỏng. Nếu bạn không thể nhìn thấy nó, bạn sẽ cần phải đăng ký với trang web và tham gia Chương trình phản hồi của IE. Các ý kiến ​​trên các lỗi jQuery làm cho nó có vẻ như bạn chỉ cần đăng ký. – BStruthers

0

Đây là giải pháp cho tôi. Trong phiên bản của Jquery mà bạn đang sử dụng, trong cas của tôi (jquery-1.7.2.js) có một phần xung quanh dòng 2764 đó là như thế này:

// 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, đó là một vấn đề của compability của IE10 trong chế độ IE7. giải pháp là thay đổi biến trả về trong hàm được đặt:

return (ret.nodeValue = value + ""); 
//for: 
elem.setAttribute(name, value + ""); 
return (ret.value); 
Các vấn đề liên quan