画布上的 IE8 模糊滤镜

发布于 2024-11-17 01:06:25 字数 571 浏览 6 评论 0原文

感谢 Google 在 IE 中的 excanvas,我有了一个可以使用的画布。现在我想模糊这件事。 我使用 IE 属性语法添加了一个模糊过滤器,它模糊了画布和 div 内的文本。

嗯...它确实可以在 IE7 和 IE9 中运行,但在 IE8 中不行。 [WTF?!]

希望有人以前见过这个。

我还尝试在画布上绘图后启用 JavaScript 的模糊,但它没有改变任何东西。

这是一个实例:

http://jsfiddle.net/rd9q5/1/embedded/result/< /a>

示例仅为 IE 代码。它在其他浏览器中不起作用,但我的主代码可以。

我在示例中放置了一个有趣的图像,以便您在帮助我的同时感到开心。 :)

[编辑]

一般来说,模糊在 IE8 中有效 - 我在示例页面的 div 底部放置了一些文本,文本变得模糊。

I've got a canvas that works thanks to Google's excanvas in IE. Now I want to blur the thing.
I added a blur filter with the IE propertiary syntax and it blurred the canvas and the text inside a div.

Well... It did work in IE7 and IE9, but not in IE8. [WTF?!]

Hope somebody have seen that before.

I also tried to enable the blur from javascript after drawing on the canvas, but it didn't change anything.

Here's a live example:

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

The example is only the IE code. It won't work in other browsers, but my main code does.

I put an interesting image in the example for you to get amused while you help me. :)

[edit]

Generally blur works in IE8 - I put some text at the bottom of the div in my example page and the text gets blurred.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

人间☆小暴躁 2024-11-24 01:06:25

发生这种情况是因为 excanvas.js 第 597 行生成的 g_vml_:shape 上指定了“position:absolute”,

为什么?!...

因为 IE8 中存在一个 BUG,即除了 static 之外的位置的元素不会继承父元素的过滤器,除非我们这样做。

要解决此问题,请执行以下选项之一

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]-->

This is happening because of the 'position:absolute' specified on g_vml_:shape produced by excanvas.js line 597

Why?!...

Because there's a BUG in IE8 that elements with position other than static will not inherit filters of parent element, unless we do that.

To fix this do one of the following options

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
}

Or

<!--[if IE 8]>
    <style type="text/css">
         #cp *{
             filter:inherit;
         }
    </style>
<![endif]-->
半城柳色半声笛 2024-11-24 01:06:25

因为微软在 IE7 之后放弃了“过滤器”,所以我很惊讶你说它可以在 IE9 中工作。

Because Microsoft dumped 'filter' after IE7 so I'm surprised you say it works in IE9.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文