VML元素的相关资料

虽然VML已经过气了,但有时我还不得不使用它,下面是我收集或研究得到的一些东西。

判定一个元素是否为VML元素

function isVML(el) {
    if (el && el.nodeType === 1) {
        var nodeName = el.nameName
        //VML元素的nodeName都是小写,并且存在命名空间,并且outerText总为空
        return nodeName.toLowerCase() === nodeName && node.scopeName && node.outerText === ""
    }
    return false
}

相对应判定一个SVG元素就简单多了

function isSVG(el) {
   return el && el.nodeType === 1 && (el instanceof window.SVGElement)
}

判定浏览器是否支持SVG或VML

function supportsVml() {
    if (typeof supportsVml.supported == "undefined") {
        var a = document.body.appendChild(document.createElement(‘div‘));
        a.innerHTML = ‘‘;
        var b = a.firstChild;
        b.style.behavior = "url(#default#VML)";
        supportsVml.supported = b ? typeof b.adj == "object": true;
        a.parentNode.removeChild(a);
    }
    return supportsVml.supported
}
function supportsSvg() {
    return document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Shape", "1.0")
}

VML的一级标签

shape, line, polyline, rect, roundrect, oval, arc, curve,background, image, shapetype, group

VML的二级标签

fill, stroke, shadow, extrusion, textbox, imagedata, textpath

IE8标准模式下VML不能显示问题可参见这里

IE下复制VML元素时,遗漏了它的某些属性见这里

//下面代码是从我的avalon抠出来的,结合了jQuery对cloneNode方法的修正以及我对VML元素的处理
    function fixCloneNode(src) {
        var target = src.cloneNode(true)
        if (window.VBArray) {//只处理IE
            var srcAll = getAll(src)
            var destAll = getAll(target)
            for (var k = 0, src; src = srcAll[k]; k++) {
                if (src.nodeType === 1) {
                    var nodeName = src.nodeName
                    var dest = destAll[k]
                    if (nodeName === "INPUT" && /radio|checkbox/.test(src.type)) {
                        dest.defaultChecked = dest.checked = src.checked
                        if (dest.value !== src.value) {
                            dest.value = src.value//IE67复制后,value从on变成""
                        }
                    } else if (nodeName === "OBJECT") {
                        if (dest.parentNode) {//IE6-10拷贝子孙元素失败了
                            dest.outerHTML = src.outerHTML
                        }
                    } else if (nodeName === "OPTION") {
                        dest.defaultSelected = dest.selected = src.defaultSelected
                    } else if (nodeName === "INPUT" || nodeName === "TEXTAREA") {
                        dest.defaultValue = src.defaultValue
                    } else if (nodeName.toLowerCase() === nodeName && src.scopeName && src.outerText === "") {
                        //src.tagUrn === "urn:schemas-microsoft-com:vml"//判定是否为VML元素
                        var props = {}//处理VML元素
                        src.outerHTML.replace(/\s*=\s*/g, "=").replace(/(\w+)="([^"]+)"/g, function(a, prop, val) {
                            props[prop] = val
                        }).replace(/(\w+)=‘([^‘]+)‘/g, function(a, prop, val) {
                            props[prop] = val
                        })
                        dest.outerHTML.replace(/\s*=\s*/g, "=").replace(/(\w+)="/g, function(a, prop) {
                            delete props[prop]
                        }).replace(/(\w+)=‘/g, function(a, prop) {
                            delete props[prop]
                        })
                        delete props.urn
                        delete props.implementation
                        for (var i in props) {
                            dest.setAttribute(i, props[i])
                        }
                        fixVML(dest)
                    }
                }
            }
        }
        return target
    }

    function fixVML(node) {
        if (node.currentStyle.behavior !== "url(#default#VML)") {
            node.style.behavior = "url(#default#VML)"
            node.style.display = "inline-block"
            node.style.zoom = 1 //hasLayout
        }
    }
时间: 2024-10-26 15:19:48

VML元素的相关资料的相关文章

http连接优化与浏览器允许的并发请求资源数相关资料(整理转载)

网页性能优化相关资料: https://developer.yahoo.com/performance/rules.html#page-nav 前端技术的逐渐成熟,还衍生了domain hash, cookie free, css sprites, js/css combine, max expires time, loading images on demand等等技术.这些技术的出现和大量使用都和并发资源数有关. 按照普通设计,当网站cookie信息有1 KB.网站首页共150个资源时,用户

(源码,具体的细节请查阅相关资料)哈弗曼树的构造以及非递归遍历树

写了一点haffman树的创建和二叉树的非递归遍历. 如果编写代码的时候出现了,思维断点,可以借鉴一下, 避免浪费一些不必要的时间. 我是占位符我是占位符我是占位符我是占位符我是占位符我是占位符我是占位符我是占位符我是占位符我是占位符我是占位符我是占 位符我是占位符我是占位符我是占位符我是占位符我是占位符我是占位符我是占位符我是占位符我是占位符我是占位符我是占位符我 是占位符我是占位符我是占位符我是占位符我是占位符我是 占位符我是占位符我是占位符我是占位符我是占位符我是占位符我是占位符我是占位符

华为FusionCloud 云计算解决方案及相关资料下载

华为FusionCloud云计算解决方案引入水平融合.垂直融合.接入融合和数据融合四位一体的全融合,对企业与行业传统数据中心的IT基础设施的进行"融合重构", 帮助企业化繁为简,实现商业价值. FusionCloud 彻底打破原有的笨重的IT基础设施在支撑企业核心业务效率与成本方面的束缚与障碍,把企业传统数据中心改造成为一个高度简化.标准化.自动化和弹性的云数据中心,使得企业的IT支撑系统从企业的"成本中心"转型成为推动企业核心业务不断发展的引擎. 相关资料下载地址

【MVC】MusicStore相关资料

引言 当你对MVC的项目结构有一定了解时,那就可以开始学习一个世界级的MVC入门demo--MusicStore.学习的绝招就是把它抄一遍. 相关资料 MVC Music Store  Codeplex主页,有源码有PDF文档,不过只有MVC 3版本的. http://www.asp.net/mvc 微软的ASP.NET主页,林林总总包含了相当多的学习资料.全英文,英文苦手如我可以用Bing全文翻译,目测准确率达60%,个别句子不通的看看原文就好. http://pan.baidu.com/s/

[jQuery编程挑战]003 克隆一个页面元素及其相关事件

挑战: a) 绑定一个点击方法到这个div,点击后此元素会淡出消失 b) 同时克隆一个新的div元素到页面,元素内容是前面div文字内容反向书写(即,sgatbg olleh),同样也具有上面的点击事件绑定,元素淡出消失 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"/> <title>克隆一个页面元素及其相关元素</titl

GBrowse配置相关资料

GBrowse配置相关资料(形状.颜色.配置.gff3) http://gmod.org/wiki/Glyphs_and_Glyph_Optionshttp://gmod.org/wiki/GBrowse_Configuration/Glyphs http://gmod.org/wiki/GBrowse_Configuration/Feature_frequency_histograms (2010)http://boyun.sh.cn/bio/?p=1817 (2011  GBrowse之频率

archlinux相关资料整理

Arch linux Arch Linux Wiki Arch linux Wiki Markdown Arch Wiki python continuing ... archlinux相关资料整理,布布扣,bubuko.com

关于Jetson Kit开发相关资料

首先是nVidia官方对于Jetson Kit的介绍: http://www.nvidia.com/object/jetson-tk1-embedded-dev-kit.html https://developer.nvidia.com/jetson-tk1 然后是nVidia官方对Jetson开发支持: https://developer.nvidia.com/jetson-tk1-support 关于Jetson Kit开发相关资料,布布扣,bubuko.com

USB相关资料汇总

[1]USB规范,一切的一切,基本的基本,天书级别USB_11_spec(中文).pdf    USB1.1规范(中文版) usb_20.pdf                     USB2.0规范(英文版)[2]USB大全(USB Complete),看名字就知道了,有你所想了解的一切,通俗易懂USB-complete.pdf  version 2 -- USB Complete第二版 英文Usb Complete - Everything You Need To Develop Cust