2013-08-28 47 views
6

Bạn bè,hasOwnProperty phần tử html Firefox

Tôi nhận thấy trong Firefox v23.0.1 rằng, hasOwnProperty của phần tử html (đầu vào, button..etc) không hoạt động,

button1.hasOwnProperty('id') = false 

tôi sử dụng cho trong để kiểm tra :

var str1 = ''; 
     for (pp in button1) { 
      if (button1.hasOwnProperty(pp)) { 
       str1 += (',' + pp); 
      } 
     } 
     alert(str1);//nothing here 

nhưng trong chrome hasOwnProperty hoạt động tốt.

bạn có biết đó là lỗi không?

+0

thử nghiệm rộng rãi hơn một chút và bạn sẽ tìm thấy các trình duyệt đang sử dụng không hỗ trợ * hasOwnProperty * trên DOM đối tượng và cũng không thể thực hiện bất kỳ loại thừa kế. – RobG

Trả lời

5

Mỗi thông số kỹ thuật, thuộc tính "id" nằm trên HTMLElement.prototype hoặc Element.prototype (tùy thuộc vào phiên bản thông số).

Firefox nhận được quyền này. Chrome đặt tất cả các thuộc tính trực tiếp trên các đối tượng thay thế.


http://dev.w3.org/2006/webapi/WebIDL/#es-attributes http://dev.w3.org/2006/webapi/WebIDL/#ecmascript-binding

+0

Bạn có chắc chắn không? Các thuộc tính như id không có ý nghĩa trên nguyên mẫu. Tôi đoán họ chỉ là không đếm được trên Firefox (không chắc chắn nếu mỗi spec DOM hay không). – bfavaretto

+1

Mỗi thông số nào? Luôn luôn tốt để nói cái nào, vì thông số kỹ thuật DOM cho đến gần đây là ngôn ngữ bất khả tri. Và bạn nên luôn luôn sao lưu các câu lệnh như vậy với các tham chiếu thích hợp. – RobG

+0

Tôi đồng ý với @Bergi. Đó là không thể. Nếu 'id' sẽ nằm trên' prototype', nó sẽ được chia sẻ giữa mọi trường hợp, điều này không có ý nghĩa gì cả. – plalx

Các vấn đề liên quan