#javascript #dom #internet-explorer-8 #internet-explorer-7 #cross-browser
#javascript #dom #internet-explorer-8 #internet-explorer-7 #кроссбраузерный
Вопрос:
как в теме
Содержимое массива Element.attributes поразит вас в Internet Explorer 6-7-8
на самом деле этот метод получения возвращает весь список свойств объекта javascript
есть ли способ эмулировать стандартный способ в старых браузерах IE?
не стесняйтесь исправлять мой английский. заранее благодарю.
Комментарии:
1. Вы пытаетесь перечислить все атрибуты элемента DOM в IE?
2. да, я пытаюсь создать список атрибутов элемента dom в IE
Ответ №1:
Поскольку браузер отключается от IE, у меня есть некоторые замечания по приведенному ниже коду :
- В коде будет указан только атрибут, который имеет определенное значение (не null). Если только IE не перечислит все более 100 атрибутов для одного элемента. Я думаю, что в этом нет необходимости.
- Вы получите еще несколько дополнительных атрибутов, таких как «tabindex», «Только для чтения»… хотя ваш код элемента просто такой: «
<input type=text>
«. Это причина IE способ сделать это.
Ну, код будет примерно таким :
$(function(){
var A = $('.targetElement').get(0).attributes
try{
var i=0;
while(A.item(i)){
if (A.item(i).value != '' amp;amp; A.item(i).value != 'null'){
$('body').append( A.item(i).name ' = ' A.item(i).value '<br>' )
}
i
}
}catch(e){}
})
Комментарии:
1. извините, я не понимаю jquery, вы можете написать это стандартным способом? Кстати, я пытаюсь перечислить только атрибуты, которые фактически прикреплены к объявлению тега … было бы лучше проанализировать innerHTML?
2. Извините, но я действительно не знаком с написанием JS-кода без jQuery. Для вашей идеи у меня есть план: 1-getElement_HTMLCode >> 2-Проанализировать код >> 3-Удалить атрибут. Я думаю, что самая сложная часть — это шаг 1.
3. Чтобы получить собственный htmlкод элемента — без jQuery — я думаю, что строка должна быть: получить элемент -> клонировать его -> добавить его в пустой div -> получить innerHTML div -> извлечь тег элемента.
4. да, разбор cloneNode (false) будет достаточно быстрым, потому что он будет очищен от любого содержимого