ClearType ломается с помощью фильтра CSS - Как удалить атрибут с помощью JavaScript? - PullRequest
1 голос
/ 09 сентября 2010

Я пытаюсь использовать JavaScript для удаления атрибута CSS «фильтр» из блока текста на странице.

Причина в том, что использование фильтра отключает ClearType в IE8.

Я пытался использовать document.getElementById("someDiv").style.removeAttribute('filter'); и someDiv.style.removeAttribute('filter');, которые не генерируют ошибки, но не имеют никакого эффекта.

Любые предложения будут оценены.

Спасибо за чтение,
Louis

Вот пример страницы:

http://img37.imageshack.us/img37/9057/filteroff.png
Фильтр отключен.

http://img203.imageshack.us/img203/3821/filteron.png
Фильтр включен.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Example</title>
</head>
<body style="filter:progid:DXImageTransform.Microsoft.Gradient(endColorstr='#ffffff', startColorstr='#eeeeee', gradientType='0');">
<div id="SomeText">
Hi, I'm some text.<br />
How's ClearType handling me?
</div>
<script type="text/javascript">
    document.getElementById("SomeText").style.removeAttribute('filter');
    SomeText.style.removeAttribute('filter');
</script>
</body>
</html>

Ответы [ 2 ]

0 голосов
/ 19 декабря 2011

Вы не должны использовать фильтр для достижения желаемого эффекта - это старый код IE и он не работает в других браузерах, и да, фильтр только на теле, поэтому вы ничего не можете сделать, чтобы сохранить ClearType в вашем тексте .

Если вы можете использовать тип документа HTML5, попробуйте следующие приемы CSS3 http://css -tricks.com / examples / CSS3Gradient / - тестирование этого в IE8 с типом HTML HTML, для которого работает вертикальный градиент.

Или, в крайнем случае, вы можете создать фоновое изображение с градиентом (любой ширины), затем использовать repeat-x и no repeat-y - но это будет иметь фиксированную высоту в качестве ограничения

0 голосов
/ 09 сентября 2010

Вероятно, невозможно удалить фильтр из <div>, поскольку у него нет свойства фильтра.

<body> - тег со свойством;после некоторого возни

document.body.style.filter = '';

Удаляет фильтр (но, очевидно, со всего тела).

...