IE8 размытие фильтра на холсте - PullRequest
2 голосов
/ 25 июня 2011

У меня есть холст, который работает благодаря Google excanvas в IE.Теперь я хочу размыть вещь.Я добавил фильтр размытия с использованием синтаксиса IE, и он размыл холст и текст внутри div.

Хорошо ... Это работало в IE7 и IE9, но не в IE8.[WTF?!]

Надеюсь, кто-то видел это раньше.

Я также пытался включить размытие из javascript после рисования на холсте, но это ничего не изменило.

Вот живой пример:

http://jsfiddle.net/rd9q5/1/embedded/result/

Примером является только код IE.Это не будет работать в других браузерах, но мой основной код работает.

Я поместил интересное изображение в пример, чтобы вы развлекались, пока вы мне помогаете.:)

[edit]

Обычно размытие работает в IE8 - я помещаю некоторый текст в конец div на моей странице примера, и текст становится размытым.

Ответы [ 3 ]

2 голосов
/ 29 июня 2011

Это происходит из-за 'position: absolute', указанного в g_vml_: shape, создаваемом строкой excanvas.js 597

Почему?! ...

Поскольку в IE8 есть ошибкачто элементы с положением, отличным от статического, не наследуют фильтры родительского элемента, если мы не сделаем это.

Чтобы исправить это, выполните одно из следующих действий

function go() {
    var browser = navigator.userAgent.toLowerCase().match(/(msie) ([\w.]+)/);
    if(document.styleSheets['ex_canvas_'] && browser && browser[2].slice(0,1) == '8'){
        var stylesheet = document.createStyleSheet();
        stylesheet.owningElement.id = 'ex_canvas_';
        stylesheet.cssText = '#cp *{filter:inherit;}';
    }
    // codes for draw
}

Или

<!--[if IE 8]>
    <style type="text/css">
         #cp *{
             filter:inherit;
         }
    </style>
<![endif]-->
1 голос
/ 28 июня 2011
0 голосов
/ 26 июня 2011

Поскольку Microsoft сбросил «фильтр» после IE7, поэтому я удивлен, что вы говорите, что он работает в IE9.

...