VML的兼容性解决方案

作者: 错码匠 | 来源:发表于2017-09-28 00:09 被阅读297次

最近维护单位的老项目,要求相关功能可以支持新的浏览器。由于是早期项目,在当初完成交付时都没有考虑过兼容问题,于是留下一些隐患,比如使用 VML 绘制的审批流程图例在 IE8+ 没有显示。

Vector Markup Language 缩写 VML,一种用于绘制矢量图形的标记语言,它是微软自 IE5 以来单方面发布的一种矢量图方案,所以非IE内核的浏览器是无法使用的。在网页开发日趋规范的形势下已被 SVG 取代,在 IE9 推出时微软开始不赞成使用 VML,而在 IE10 发布后干脆放弃了 VML(详见 不再支持 VML)并建议迁移到 SVG。

好在客户的工作环境只在 IE 浏览器下,而我们知道 IE 每个版本都集成了上一版的内核,这让我们可以通过切换到特定渲染模式去满足 VML 的运行环境,使这些元素正常显示:

<html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
    <style>
        v\:* {behavior: url(#default#VML)}
        
        .oval {
            width: 100px;
            height: 50px;
            line-height: 50px;
            text-align: center;
        }
    </style>
</head>
<body>
    <xml:namespace ns="urn:schemas-microsoft-com:vml" prefix="v">
        <v:oval class="oval" fillcolor="red" class="oval">
            oval
        </v:oval>
    </xml:namespace>
</body>
</html>

相较原先,改进后的代码多了样式引入 v\:* {behavior: url(#default#VML)} 和强制渲染声明 <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />,同时还需要注意标签的命名空间的统一。

显示效果图

现在这段代码所声明的图例在 IE11 下也可以正常显示。至于 IE 之外的浏览器那就不得不借助 SVG 做代码重构了。另外通过 JS 动态添加 VML 元素也需要做些调整,由于这涉及到 DOM 操作,于是就不是本文力求简明扼要的笔记风格可以完全涵盖的范围了。

参考:

相关文章

  • VML的兼容性解决方案

    最近维护单位的老项目,要求相关功能可以支持新的浏览器。由于是早期项目,在当初完成交付时都没有考虑过兼容问题,于是留...

  • 2018-04-25

    [if !vml] [endif]雨中游古北水镇 [if !vml][if !vml] [endif]J�X�9�...

  • Python3.7&Django1.11.15 兼容性问题

    解决方案如下:Python3.7&Django1.11.15 兼容性问题

  • javascript之“事件绑定”

    设计场景 给元素绑定事件 问题 兼容性问题 解决方案

  • 浏览器兼容性问题及解决方案(JS部分)

    关于浏览器兼容性问题的姊妹篇《浏览器兼容性问题及解决方案(CSS部分)》请点击这里。 常见的JS兼容性部分的问题有...

  • 事件操作

    注册事件兼容性解决方案 删除事件 div.removeEventListener('click',fn); 删除事...

  • 2018-08-29

    [if !vml] [endif]

  • 影评:《芳华》[if !vml]

    影评:《芳华》 电影《芳华》给我的感觉是平淡而深刻的令人回味。刘峰故事的主人公,带着我重温那个年代的故事,这其中最...

  • 孤独如风-第十七章

    [if !vml][endif][if !vml][endif]老酋长家的门开了,刘风和Danny连忙站起身来,杰...

  • 3-3 页面布局(总结)

    问题: 1: 浮动解决方案 优点-兼容性好,用清除浮动和处理好周边的元素后,兼容性是比较好的 缺点- 浮动之后是脱...

网友评论

    本文标题:VML的兼容性解决方案

    本文链接:https://www.haomeiwen.com/subject/zmjpextx.html