`

js粘贴图片(可以显示或上传)仅支持IE11,chrome,firefox

 
阅读更多

项目中如果想支持粘贴截图上传图片,或者粘贴截图显示到某个位置,可以用这段代码,支持IE11,chrome。

注意粘贴图片不支持mac os 中的safari,safari会弹窗提示:Oops: You are trying to paste an image in Safari, however we are unable to retieve its data. 不让粘贴图片。

2016-12-01 备注:发现在windows 7中安装了firefox新版测试,这段代码无法运行,所以,请看附件代码,利用paste.js支持图片粘贴,那个可以做到在IE11,chrome,firefox中运行!

 

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>测试</title>
	<style type="text/css">
	#editor {width: 500px;height:300px; border: 1px solid black;cursor:text;}
	</style>
</head>
<body>
	<div id="editor" contentEditable="true">这里填写内容!</div>
	<script src="index.js"></script>
</body>
</html>

 

 

document.querySelector('#editor').onpaste = function(e) {
	//判断是否是粘贴图片				
	if (e.clipboardData && e.clipboardData.items && e.clipboardData.items[0].type.indexOf('image') > -1) {
		var that = this,
			reader = new FileReader(),
			file = e.clipboardData.items[0].getAsFile();
		reader.onload = function(e) {
			// this.result得到图片的base64 (可以用作即时显示)
			var img = '<img src="' + this.result + '" alt=""/>';
			insertAtCursor(that, img);
		}
		reader.readAsDataURL(file);
	}
};

function insertAtCursor(dom, html) {
	if (dom != document.activeElement) { // 如果dom没有获取到焦点,追加
		dom.innerHTML = dom.innerHTML + html;
		return;
	}
	var sel, range;
	if (window.getSelection) {
		// IE9 或 非IE浏览器
		sel = window.getSelection();
		if (sel.getRangeAt && sel.rangeCount) {
			range = sel.getRangeAt(0);
			range.deleteContents();
			// Range.createContextualFragment() would be useful here but is
			// non-standard and not supported in all browsers (IE9, for one)
			var el = document.createElement("div");
			el.innerHTML = html;
			var frag = document.createDocumentFragment(),
				node, lastNode;
			while ((node = el.firstChild)) {
				lastNode = frag.appendChild(node);
			}
			range.insertNode(frag);
			// Preserve the selection
			if (lastNode) {
				range = range.cloneRange();
				range.setStartAfter(lastNode);
				range.collapse(true);
				sel.removeAllRanges();
				sel.addRange(range);
			}
		}
	} else if (document.selection && document.selection.type != "Control") {
		// IE < 9
		document.selection.createRange().pasteHTML(html);
	}
}

 

js中用到了在DIV中的光标位置插入内容的函数:insertAtCursor。

jquery.js请自行补充。

 

因为上述代码在新版的firefox中无法支持,所以请看附件代码,利用paste.js支持粘贴图片。

paste.js项目地址:https://github.com/layerssss/paste.js 

 

分享到:
评论

相关推荐

    js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)

    我们或多或少都使用过各式各样的富文本编辑器,其中有一个很方便功能,复制一张图片然后粘贴进文本框,这张图片就被上传了,那么这个方便的功能是如何实现的呢? 原理分析 提取操作:复制=&gt;粘贴=&gt;上传 在这个操作...

    浏览IE缓存图片,并保存图片浏览IE缓存图片,并保存图片

    标题和描述都提到了“浏览IE缓存图片,并保存图片”...不过,现代浏览器如Chrome、Firefox等也有类似的缓存机制,操作方式大同小异。对于高级用户,还可以使用开发者工具查看和分析网络请求,其中包括缓存的图片信息。

    kindeditor文本编辑器实例(包含本地图片上传及浏览服务器方法)

    KindEditor设计时考虑了跨浏览器兼容性,支持主流的浏览器如Chrome、Firefox、Safari、IE等。同时,它也可以在不同操作系统和设备上运行,适应移动互联网的发展。 总的来说,KindEditor文本编辑器实例提供了丰富的...

    图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传

    在浏览器支持方面,ImgUploadJS插件目前支持主流的浏览器,包括但不限于IE11、Chrome、Firefox,以及理论上支持的Safari。随着技术的发展和浏览器的更新,未来可能会支持更多的浏览器。 插件的使用简单方便,提供了...

    开源编辑器和文件上传组件开发库 ckeditor_4.5.3和kcfinder(2)

    5. **跨平台兼容**:能在多种浏览器和操作系统上运行,包括IE、Firefox、Chrome、Safari和Opera。 **KCFinder** KCFinder是一款轻量级的文件管理器,特别设计用于与CKEditor等富文本编辑器配合使用。它提供了一个...

    Ueditor粘贴word里图文内容到编辑器中

    Ueditor支持图片上传功能,用户可以选择“图片”按钮,然后从本地选择或直接粘贴图片到弹出的对话框中,图片会被自动上传并插入到编辑器中。 4. **注意兼容性**:不同的浏览器对粘贴操作的处理可能有所不同,因此在...

    一个通用js右键菜单控件JavaScript Context Menu Control

    3. **兼容性广泛**:作为一个基于纯JavaScript的库,它与主流的浏览器(如Chrome、Firefox、Safari、Edge和IE9+)兼容,无需依赖任何特定的JavaScript框架或库。 4. **易用性**:其API简洁明了,使得开发者可以快速...

    wowslider-JS幻灯片制作工具

    在代码生成方面,WowSlider会自动生成HTML、CSS和JavaScript代码,这些代码兼容大部分现代浏览器,包括Chrome、Firefox、Safari、Edge以及IE9及以上版本。用户只需将生成的代码复制粘贴到网页源代码中,即可在网站上...

    js剪切板应用clipboardData实例解析

    目前仅有高版本的 Chrome 浏览器支持这样直接粘贴,其他浏览器目前为止还无法粘贴,不过火狐和ie11浏览器在可编辑的div中能够粘贴截图的图片也是base64位和Chrome利用clipboardData的效果是一样的,只是在火狐和ie11...

    js按钮导出word

    另外,对于图片,由于ActiveXObject方式不支持直接插入图片,所以通常需要先将图片转换为Base64编码,然后在Word文档中插入一个包含Base64编码的`&lt;img&gt;`标签,用户在打开Word文档时,Word会自动解析并显示图片。...

    禁用网页“复制”、“粘贴”的破解方法

    如果上述方法无效,或者你使用的是其他浏览器,例如Chrome、Firefox或Safari,那么可以尝试以下通用方法: 1. 使用开发者工具:大多数现代浏览器都内置了开发者工具,你可以通过F12(Windows)或Cmd+Opt+I(Mac)...

    JS复制内容到剪切板的实例代码(兼容IE与火狐)

    在现代浏览器中,如Chrome、Firefox等,已经提供了较为统一的复制到剪切板的API,但在兼容性问题上,特别是较早的IE(Internet Explorer)浏览器,我们需要使用特殊的方法来实现这一功能。 ### 知识点二:兼容IE与...

    在浏览器中实现图片粘贴的jQuery插件– pasteimg使用指南

    pasteimg是一款可以在浏览器中实现图片粘贴的jQuery插件,兼容Chrome、Firefox、IE11以及其他使用这些内核的浏览器,比如,国内著名的360浏览器。  pasteimg可以识别浏览器中直接复制的图片,也可以识别复制的富...

    MxBlog 博客系统 v3.2.5.3 含有两个版本.zip

    2. 支持html5,兼容全部主流浏览器,包括firefox, chrome, IE, 搜狗, 360等。(兼容手机浏览器UC等) 3. 多种主流数据库支持,一套程序多种数据库间任意切换,支持 sql server. oracle. access. mysql。 4. 新增...

    KindEditor4x.rar

    这款编辑器具有良好的浏览器兼容性,支持IE、Firefox、Chrome、Safari、Opera等主流浏览器,确保了用户在不同设备和操作系统上的使用体验。同时,由于其基于Web的特性,它可以在Windows、Linux、Mac等多种平台上...

    zTree js css img包.zip

    5. **跨浏览器兼容**:zTree经过优化,能够在主流的浏览器如Chrome、Firefox、Safari、IE等上运行良好,确保了良好的跨平台兼容性。 6. **皮肤可定制**:通过CSS样式,开发者可以轻松地更改zTree的外观,适应不同的...

    网站右侧二维码生成和返回顶部jQuery代码.rar

    基于jQuery编写的一个侧边特效,在网页的右侧自动生成可扫描的二维码图片,二维码内容为对应网页网址链接,同时带有返回顶部按钮。... 2、适用浏览器:IE8、360、FireFox、Chrome、Opera、傲游、搜狗、世界之窗.

Global site tag (gtag.js) - Google Analytics