javascript获取iframe、object、embed标签中引入SVG对象元素

javascript获取iframe、object、embed标签中引入SVG对象元素

最近完成一个小功能,需要用js操作iframe标签中引入的SVG中的DOM,网上找了好多实例,总是获取不到iframe中的DOM,网上无意中看到一个方法,发现原来iframe中引入的SVG只有在加载完成后才可被获取,现在将代码贴出来,供需要的朋友参考一下。

JS代码

    /*获取iframe中引入的svgDom时,必须等到iframe加载完成后,
    才可通过document.getElementById('iframe').contentDocument获取svgDom,否则获取失败*/
    var frameObj= document.getElementById('svgframe');
    if (frameObj.attachEvent) {
        frameObj.attachEvent('onload', function () {
            alert('iframe is loaded')
        })
    } else {
        frameObj.onload = function () {
            //这里获取svgDom
            var iframeSvg = document.getElementById('svgframe').contentDocument;
            //接下来就可以对svgDom进行操作,绑定元素点击事件,改变元素的属性等等
            //重新设置SVG文档中id为ZB_SXIc的text的值
            var txtObj = iframeSvg.getElementById("ZB_SXIc");
            txtObj.textContent = "test"
        }
    }

HTML代码

<div class="pull-right" >
        <div class="panel">
            <div class="panel-body">
                <iframe id="svgframe" src="#" width="100%" height="768px"></iframe>
            </div>
        </div>
    </div>

结语

如果是object或者embed标签引入的文档,只需改变SVG对象的或者方式即可

var svgObject = document.getElementById('object').contentDocument;
var svgIframe = document.getElementById('iframe').contentDocument;
var svgEmbed = document.getElementById('embed').getSVGDocument();

第一次发帖,水平粗糙,希望能给予需要的人帮助,毕竟自己在这个论坛受益颇多。

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值