#javascript #cross-browser
#javascript #кроссбраузерный
Вопрос:
Добрый день, интересно, как получить currentStyle в IE, передавая параметры в аргумент функции, подобный этому:
function test(el,value){
return document.getElementById(el).currentStyle[value];
}
если бы я использовал аналогичную функцию для получения стиля из Firefox, Chrome и так далее, это привело бы к результату.
используя функцию, подобную этой:
function test(el,value){
return getComputedStyle(document.getElementById(obj))[value];
}
, где значение — это свойство элемента, такое как backgroundColor , т.е:
alert(test('ObjectId','backgroundColor'));
….
это вернет backgroundColor в FF, Chrome .. но не в Internet Explorer
Какие r возможные решения ..?
Спасибо..
пожалуйста, я не ищу решение jQuery…
Комментарии:
1. Фрагмент вашего скрипта, использующий currentStyle, должен работать в IE. Это не работает?
2. Почему вы не хотите использовать jquery? Если они ответили на ваш вопрос, проверьте это!
Ответ №1:
Вот что я использую для извлечения значения свойства стиля
function getStyle(el,sProp,toInt){
var elem = el;
if (elem.currentStyle) {
return toInt
? parseInt(elem.currentStyle[sProp],10)
: elem.currentStyle[sProp] || 0;
} else if (window.getComputedStyle) {
var compStyle = window.getComputedStyle(elem, null)[sProp];
return toInt ? parseInt(compStyle,10) : compStyle || 0;
}
return String(elem.style[sProp]||0);
}
Ответ №2:
Это (к сожалению) очень сложно.
Я написал независимый от браузера распознаватель, но я не могу поделиться им с вами.
Если вы не пишете свой собственный фреймворк, я должен спросить, почему вы хотите иметь возможность разрешать все? Есть ли конкретное свойство (или несколько свойств), которые вы хотите? Потому что это могло бы быть намного проще.
Если вам нужен просто цвет фона, то, вероятно, достаточно .style.backgroundColor.
Кроме того, в вашем примере скрипта есть ошибка:
alert(test('ObjectId'),'backgroundColor');
Должно быть:
alert(test('ObjectId','backgroundColor'));
Я не в первый раз совершаю одну и ту же ошибку 😉 — мне потребовалось полдня, чтобы найти ее
Комментарии:
1. Цель состоит в том, чтобы получить неизвестные свойства до тех пор, пока функция не будет вызвана, но проблема в этой функции, которую я написал здесь, которая является эскизом, чтобы указать на мою озабоченность, заключается в том, что Internet Explorer анализирует аргумент «значение» как неизвестное свойство, а именно, перед тем, как я передаю параметр, он анализирует currentStyle [значение]. Это происходит, когда для meta content http-equiv=»x-ua-compatibility» установлено значение «IE=EmulateIE8″, <meta http-equiv=»x-ua-compatible» content=»IE=EmulateIE8″ />, так что таким образом вы можете попробовать это самостоятельно. Кстати, я пишу свой собственный фреймворк. Спасибо.