vue中edge浏览器html2canvas兼容问题

这几天工作之余遇到一个比较棘手的问题,是就是利用html2canvas生成图片,在Chrome中使用没有问题但是在edge和ie浏览器中报错:
1、在edge浏览器中提示:

t无法获取未定义或 null 引用的属性“toBlob”

2、在ie浏览器(ie11)中提示:

117ms html2canvas: Unable to access cssRules property
118ms html2canvas: Error: 找不到成员。
158ms html2canvas: Error: 找不到成员。
Unhandled promise rejection Error: 找不到成员。

本着先易后难的原则,我们来看第一个问题:
顾名思义,肯定是在edge浏览器中不支持toBlob属性方法。那么到底这个方法是不是兼容edge就需要去研究下关于此方法的官方文档了:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob#Browser_compatibility
在这里插入图片描述
这就有点懵逼了!居然不支持edge…但是发现还有一行在ie浏览器下需要加一行前缀’ms’前缀的介绍,所以觉得还是应该一试。
首先当然是判断一下当前浏览器类型,这里可以在methods里面定义一个公共方法,如果只用一次的话建议还是写在当前组件当中:

getExplorer (){
	var explorer = window.navigator.userAgent,
        compare = function (s) { return (explorer.indexOf(s) >= 0); },
        ie11 = (function () { return ("ActiveXObject" in window) })();
    if (compare("MSIE") || ie11) { return 'ie'; }
    else if (compare("Firefox") && !ie11) { return 'Firefox'; }
    else if (compare("Chrome") && !ie11) {
        if (explorer.indexOf("Edge") > -1) {
            return 'Edge';
        } else {
            return 'Chrome';
        }
    }
    else if (compare("Opera") && !ie11) { return 'Opera'; }
    else if (compare("Safari") && !ie11) { return 'Safari'; }
}

通过上述方法可以拿到当前浏览器类型;
当为edge或ie浏览器时,在toBlob方法前面加上’ms’的前缀

var webType = this.getExplorer ();
if(webType  == 'Edge' || webType  == 'ie'){
        var blob = canvas.msToBlob();
        ....
        return;
    }

这样edge浏览器兼容性问题就解决了。
接下来ie浏览器下找不到成员问题:

暂时还没研究出来,后续有进展会继续分享~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3使用html2canvas可以通过以下步骤进行: 1. 首先,安装html2canvas库。你可以使用npm或yarn在你的项目安装它: ```bash npm install html2canvas ``` 2. 在你的Vue组件,导入html2canvas库: ```javascript import html2canvas from 'html2canvas'; ``` 3. 在需要截取的元素上添加一个ref属性,以便在后面引用该元素。例如,在模板添加ref属性: ```html <template> <div ref="captureElement"> <!-- 这里是你要截取的内容 --> </div> <button @click="capture">截图</button> </template> ``` 4. 在Vue组件的methods,编写一个函数来触发截图操作。在该函数,使用html2canvas库的`toBlob`方法来生成截图的blob对象。你可以将该blob对象转换为图片并进行下载或者进一步处理。 ```javascript methods: { capture() { const element = this.$refs.captureElement; html2canvas(element).then(canvas => { canvas.toBlob(blob => { const imageURL = URL.createObjectURL(blob); // 这里可以进行下载或者进一步处理 }); }); } } ``` 在上述代码,`this.$refs.captureElement`引用了之前添加ref属性的元素。`html2canvas(element)`将传入的元素转换为canvas对象,然后通过`toBlob`方法生成blob对象,最后可以使用`URL.createObjectURL`方法将blob对象转换为图片URL。你可以根据需要进一步处理该URL,例如下载或者展示给用户。 以上是在Vue 3使用html2canvas的基本步骤,希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值