利用canvas实现图片下载功能来实现浏览器兼容问题

来源:脚本之家  责任编辑:小易  

//初始化调用 $(function(){ placeholder.init(); //placeholder.init('#div1'); //动态加载后,可这样调用 });

前言:项目中需要实现图片下载功能,第一个想到的是使用a标签的download属性来实现,但是在不同浏览器下测试会发现,有的浏览器无效,点击后直接预览图片,所以,上网找到了另外一种兼容不同浏览器的图片下载的方法,那就是利用canvas来处理图片,实现下载;

if (window.addEventListener) { window.addEventListener('DOMContentLoaded', onCustomLoaded, false); //firefox window.addEventListener('load', onCustomLoaded, false); window.addEventListener('resize', onCustomResize, false); } el

1.项目中点击事件绑定:

直接打开qq浏览器设置下就OK了。 打开浏览器主菜单--设置--安全设置--不启动拦截的模式就可以。 之后qq浏览器就可以知道canvas的drawimage了。 通过这个浏览器既可以上网还可以一边看视频一边搜索网页呢。 最主要的使用qq浏览器上网很流畅。

<a href="#" @click.prevent="downloadIamge(imgsrc, name)"><span>{{name}}</span></a>

你的脚本是放在标签中的吗?另外ctx=c.get.Context("2d");多了个点,应该是ctx=c.getContext("2d"); 使用如下代码绘图没有问题: canvas画板你的浏览器不支持html5var c,ctx,img;c=document.getElementById("canvas_A");ctx=c.getContext("2d")

2.点击事件中操作:

方法一: function checkhHtml5() { if (typeof(Worker) !== "undefined") { alert("支持HTML5"); } else { alert("不支持HTML5"); } } 。 方法二: if (!document.getElementById("Canvas").getContext){ alert("不支持html5"); }else{ alert("

downloadIamge (imgsrc, name) { const url = imgsrc this.convertUrlToBase64(url).then((base64) => { const blob = this.convertBase64UrlToBlob(base64) if (getBrowser() === 'IE' || getBrowser() === 'Edge') { window.navigator.msSaveBlob(blob, name) } else { const a = document.createElement('a') const body = document.querySelector('body') a.download = name || 'image' a.href = URL.createObjectURL(blob) a.style.display = 'none' body.appendChild(a) a.click() body.removeChild(a) window.URL.revokeObjectURL(a.href) } }) },

1、一个连补刀都不用的游戏!王者相对lol来说却是简单的多,甚至站在旁边死掉的兵都会给你加钱,所以lol的玩家就觉得这是一个弱智的游戏,但是玩游戏不是为了开心吗?又不要打职业,娱乐就好!2、嫉妒心理可能这个dota玩家深有体会,突然大批玩家流失去玩另一个游戏,当然会出现嫉妒的心理,所以dota玩家歧视lol,lol玩家歧视王者!3、抄袭!这是最重要的一点,因为王者刚开始几乎所有英雄都是从lol抄袭的。但是拳头公司是腾讯的,又不能告。引起玩家的愤怒!不知道你们发现了没有,王者正在一步一步脱离lol,和lol完全一样的英雄很多都被改版了!

3.this.convertUrlToBase64(url)就是利用canvas和toDataURL把图片转成base64格式并返回

春天气温是逐渐呈上升的趋势,很多的细菌也是随着温度逐渐生长,然而秋天的时候是从夏天刚刚走过来换季的时候细菌也是在大量的繁衍,所以床单被罩就要换洗的勤一点,床单被罩多久换一次,两周时间换一次就是最合适的了。  在炎热的夏天,细菌是非常的多的哦,同时夏天因为太热也容易出汗,那么就会使床单被罩脏的更加快一些,还有就是夏天的时候空气中的尘埃也是非常严重的,也会导致床单被罩脏的更加快,床单被套多久换一次,在夏天的话最好一周换一次,如果有可以三天一次就更好了。  在寒冷的冬季,那么显然床单被罩就不用换的那么勤,冬天温度比较低,细菌也是不易生长的,就可以使用久一点在清洗,床单被套多久换一次,那么在冬季的话床

convertUrlToBase64 (url) { return new Promise((resolve, reject) => { const img = new Image() img.crossOrigin = 'Anonymous' img.src = url img.onload = function () { const canvas = document.createElement('canvas') canvas.width = img.width canvas.height = img.height const ctx = canvas.getContext('2d') ctx.drawImage(img, 0, 0, img.width, img.height) const ext = img.src.substring(img.src.lastIndexOf('.') + 1).toLowerCase() const dataURL = canvas.toDataURL('image/' + ext) const base64 = { dataURL: dataURL, type: 'image/' + ext, ext: ext } resolve(base64) } }) },

房龄20年太老了,20年前的房子在社区规划和产品设计在舒适性、使用率上都不会太好,而且比较重要的是,咱们房子的使用寿命也就30年到40年之间,也就是说这套房子你就算买下来也就20年左右的使用寿命。你说你们那商品新房最高价在5500左右,那应该是一个五线城市,均价估计也就4000到4500左右,你买一套100平米的房子价格大概40到45万之间,价格和你意向中的二手房价格差10万左右,如果贷款的话首付差别在3万左右,差别并不是很大。如果算上二手房的税费,这个差价可能更小。所以,综合比较,还是建议你考虑新房,但是有一点,如果这套房子是优质学区房,如果位置非常优越的话那就另当别论了,毕竟,在目前,房子

其中:img.crossOrigin = 'Anonymous'是前端对图片的跨域处理;

随手采了朵花,获刑3年。这问题听起来可笑,却真实发生在河南卢氏县。事情是这样子的:秦某发现其农田附近的山坡上长着类似兰草的“野草”,便在干完农活回家时顺手采了3株,被森林民警查获。经河南林业司法鉴定中心鉴定,秦某非法采伐的兰草系兰属中的蕙兰,属于国家重点保护植物。于是,秦某被公安机关行政拘留7日。后由(河南省)卢氏县检察院提起公诉,对秦某涉嫌非法采伐国家重点保护植物罪案一审作出判决,卢氏县人民法院以秦某犯非法采伐国家重点保护植物罪判处其有期徒刑3年,缓刑3年,并处罚金3000元。话说这案件宣判后,河南法制报一篇题为《采了3株“野草”男子获刑3年》的报道受到多家媒体及众多网友关注。这让平时最爱去

4.this.convertBase64UrlToBlob(base64)是将图片base64流文件转成blob文件

convertBase64UrlToBlob (base64) { const parts = base64.dataURL.split('base64,') const contentType = parts[0].split(':')[1] const raw = window.atob(parts[1]) const rawLength = raw.length const uInt8Array = new Uint8Array(rawLength) for (let i = 0; i < rawLength; i++) { uInt8Array[i] = raw.charCodeAt(i) } return new Blob([uInt8Array], { type: contentType }) },

5.getBrowser()用来判断浏览器,解决浏览器兼容性问题:

import { getBrowser } from '@/utils/utils' export function getBrowser () { const userAgent = navigator.userAgent if (userAgent.indexOf('OPR') > -1) { return 'Opera' } if (userAgent.indexOf('Firefox') > -1) { return 'FF' } if (userAgent.indexOf('Trident') > -1) { return 'IE' } if (userAgent.indexOf('Edge') > -1) { return 'Edge' } if (userAgent.indexOf('Chrome') > -1) { return 'Chrome' } if (userAgent.indexOf('Safari') > -1) { return 'Safari' } }

6.如果是IE或者Edge浏览器,可以直接使用window.navigator.msSaveBlob(blob, name)完成下载;

声明:由于ios系统有安全性限制,以上方法在ios上无效;

以上就是记录项目中用到的图片下载,浏览器兼容的问题,涉及到的base64和blob的知识点和原理还不是很清晰,有时间一定要研究一下,整个方法,亲测有效;欢迎测用,与意见反馈。也希望大家多多支持脚本之家。

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

如何调用IE11浏览器的ActiveX实现下载canvas画布区域内的图片下载到本地

/**

 *将canvas转成图片,直接用JS即可,不需要activex

 */

function convertCanvasToImage(canvas) {

var image = new Image();

image.src = canvas.toDataURL("image/png");

return image;

}本回答被提问者采纳

哪些浏览器支持canvas

Canvas支持以下浏览器的最新和先前的主要版本:

  • Chrome 61、62

  • Firefox 56、57(不支持延伸版本)

  • Flash 26、27(用于录制或浏览音频/视频并上传文件)

  • Internet Explorer 11和Edge 40和41(仅Windows——请确认您的操作系统是Canvas计算机技术参数课程中标识的最新版本;您可能需要下载Windows 10周年更新才能提交Canvas作业)

  • Respondus LockDown 浏览器 (支持最新的系统要求)

  • Safari 10 和 11 (仅苹果电脑)

浏览器不支持html5 canvas怎么解决

有以下两种方法可以判断浏览器是否支持html5:

方法一:

<script>

function checkhHtml5() {

if (typeof(Worker) !== "undefined") { alert("支持HTML5"); } else { alert("不支持HTML5"); } }

</script>。

方法二:

<canvas id="Canvas"></canvas>

<script>

if (!document.getElementById("Canvas").getContext){

alert("不支持html5");

}else{

alert("支持html5");

}

</script>。本回答被提问者采纳

如何判断浏览器是否支持HTML5 Canvas

需要准备的材料分别有:电脑、浏览器、html编辑器。

1、首先,打开html编辑器,新建html文件,例如:index.html。

2、在index.html中的<body>标签中,输入js代码:。

try{

document.createElement("canvas").getContext("2d");

$('body').append('支持canvas');

} catch (e) {

$('body').append('不支持canvas');

}

3、浏览器运行index.html页面,此时会打印出浏览器对html5 canvas的支持程度。

如何判断浏览器是否支持HTML5 Canvas?

在创建HTML5 canvas元素之前,首先要确保浏览器能够支持它。如果不支持,就要为那些古董级浏览器提供一些替代文字。下面的代码就是检测浏览器支持情况的一种方法。try { document.createElement("canvas").getContext("2d"); document.getElementById("support").innerHTML = "HTML5 Canvas is supported in your browser."; } catch (e) { } 上面的代码试图创建一个canvas对象,并且获取其上下文。如果发生错误,则可以捕获错误,进而得知该浏览器不支持canvas。页面中预先放入了ID为support的元素,通过以适当的信息更新该元素的内容,可以反映出浏览器的支持情况。 以上示例代码能判断浏览器是否支持canvas元素,但不会判断具体支持canvas的哪些特性。这个时候,示例中使用的API已经很稳定并且各浏览器也都提供了很好的支持,所以通常不必担心这个问题。 此外,希望开发人员能够像如上代码一样为canvas元素提供备用显示内容。

  • 本文相关:
  • canvas 下载二维码和图片加水印的方法
  • html5使用canvas实现图片下载功能的示例代码
  • 如何调用IE11浏览器的ActiveX实现下载canvas画布区...
  • 哪些浏览器支持canvas
  • 浏览器不支持html5 canvas怎么解决
  • 如何判断浏览器是否支持HTML5 Canvas
  • 如何判断浏览器是否支持HTML5 Canvas?
  • html2canvas中div转化为图片时候会浏览器会加载下,...
  • 如何使canvas自适应浏览器窗口?
  • qq浏览器支持canvas的drawimage方法吗
  • H5的canvas在ie下面有个drawImage不兼容
  • IE11浏览器不支持html2canvas
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved