Tôi đang tìm đến (tự động) có được một danh sách các phần tử HTML trình duyệt hiện nhận thức, chẳng hạn như HTMLPreElement
, HTMLSpanElement
vv Những đối tượng mang tính toàn cầu, nghĩa làLiệt kê tất cả các thuộc tính của đối tượng cửa sổ?
console.log('HTMLPreElement' in window); //=> true
Vì vậy, tôi nghĩ rằng tôi muốn được có thể sử dụng getOwnPropertyNames
như thế này:
console.log(Object.getOwnPropertyNames(window));
để có được danh sách đầy đủ các tính chất toàn cầu (MDN khẳng định rằng đây trả về cả tính đếm được và không đếm được).
Sử dụng ở trên, tôi nhận được một mảng với khoảng 70 thuộc tính cần cẩu. Tuy nhiên, nó không bao gồm các đối tượng như HTMLPreElement
- chỉ HTMLElement
. Tôi cũng đã cố gắng:
console.log(Object.getOwnPropertyNames(window.Window.prototype));
mà mang lại một danh sách lớn hơn (bao gồm cả addEventListener
vv) nhưng một lần nữa, không có HTMLPreElement
.
Vì vậy, nơi nào các đối tượng cư trú này có các đối tượng HTML{Tag}Element
?
Trông như thế này làm việc trong WebKit (chỉ với một đơn giản 'cho ... in') nhưng Firefox từ chối liệt kê chúng. – Graham
Mặc dù thật thú vị khi biết tại sao bạn không thể nhìn thấy nó trong Firefox, điều thú vị là không ít biết tại sao bạn quan tâm ...? – gdoron
@gdoron - lúc đầu tôi chỉ cần một danh sách các thẻ hợp lệ, nhưng khi tôi không thể nhìn thấy chúng tôi đã quan tâm nhiều hơn đến lý do tại sao chúng không xuất hiện. – Graham