javascript - Canvas 上的 IE8 模糊滤镜

标签 javascript internet-explorer canvas filter blur

借助 Google 在 IE 中的 excanvas,我有了一个可以正常工作的 Canvas 。现在我想模糊这件事。 我使用 IE 属性语法添加了一个模糊过滤器,它模糊了 Canvas 和 div 内的文本。

嗯...它确实在 IE7 和 IE9 中有效,但在 IE8 中不行。 [什么鬼?!]

希望有人以前见过这个。

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

这是一个实例:

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

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

我在示例中放置了一张有趣的图片,以便您在帮助我时感到有趣。 :)

[编辑]

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

最佳答案

发生这种情况是因为 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]-->

关于javascript - Canvas 上的 IE8 模糊滤镜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6477775/

相关文章:

javascript - 如何让 JavaScript 中的碰撞函数正常工作?

javascript - `var MyConstructor = function MyConstructor()` 有什么作用?

javascript - Angular i18n 动态文本

javascript - 创建 ESLint CLIEngine 时出现问题

css - 滚动菜单在 IE 中正确显示,但在 Firefox 或 Safari 中不正确

javascript - HTML5 使用 Canvas 旋转图像

javascript - 使用 jQuery 为复选框设置 "checked"

html - Internet Explorer 8 - 打印页面的标题

css - 在 IE 中镜像/翻转图像并保持透明度

android 计时器 View (就像进度条一样)在 Canvas 中更新颜色