首页
学习
活动
专区
圈层
工具
发布

Vue实现图片与文字混输

知识在于积累,踩坑越多,你越强 前言 用多了JQuery,习惯了使用JQuery的API操作DOM,几乎忘记了原生JS对DOM操作,今天在项目中遇到了文字和图片混输的情况,第一个想到的办法是用textarea...创建img标签,赋值转换好的图片地址•从refs对象中获取到输入框元素,赋值创建好的img标签 实现过程 •声明div可编辑,监听回车键事件,关闭拼写检查,绑定ref方便获取当前元素 <div class.../assets/img/emoji/${path}`); } } 踩坑记录 •直接使用append()方法 公司项目一直用JQuery,类似的需求直接append,以为是js提供的方法,...•正确的实现方法 创建DOM字符串,使用document暴露的execCommand方法来插入创建好的DOM字符串。...•不过execCommand的兼容性欠佳,如果遇到没反应的情况,是你的浏览器不支持此api。

1.8K30

vue实现文字表情同时输入的方法

在我们使用聊天工具进行聊天的时候经常会用到表情符号,有时我们会需要将文字与表情混输,本文就来为大家介绍一下使用vue实现文字表情混输的方法。 ?...从refs对象中获取到输入框元素,赋值创建好的img标签 实现过程 声明div可编辑,监听回车键事件,关闭拼写检查,绑定ref方便获取当前元素 <div class="input-panel" ref.../assets/img/emoji/${path}\`); } } 踩坑记录 直接使用append()方法 一直用JQuery,类似的需求直接append,以为是js提供的方法,结果这里直接使用...正确的实现方法 创建DOM字符串,使用document暴露的execCommand方法来插入创建好的DOM字符串。...不过execCommand的兼容性欠佳,如果遇到没反应的情况,是你的浏览器不支持此api。 ?

2.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    前端复制方案全覆盖!验证真机与生产代码完美一致!✨

    但是,如果需要复制的是非常大段的内容,则 execCommand() 方法可能会引起卡顿,因为 execCommand() 方法是一个同步方法,必须等复制操作结束,才能继续执行后面的代码。...重要事情说三遍 document.execCommand,clipboard.js均不支持异步数据的复制 document.execCommand,clipboard.js均不支持异步数据的复制 document.execCommand...从程序执行角度来说,代码是没有问题的,只是复制操作被拦截了,各个浏览器表现不一致。 解决方案 修改交互 将异步数据需要调用的接口,提前调用,在点击复制按钮之前,直接使用已经获得的数据。...将异步数据需要调用的接口,提前调用,在点击复制按钮之前,直接使用已经获得的数据。 或者在按钮之上,再增加弹窗,提示用户复制,在用户点击弹窗确认再执行复制,从交互上分离复制和获取数据功能。.../1.10.2/jquery.min.js"> function copy(text) { let input = document.createElement

    1.6K21

    年度实用技巧 | 给不懂技术的朋友简单演示,代码是怎么被编写出来的

    功能实现左侧是可选的功能列表,包含本次所有可查看代码的功能;右上是选择的功能展示;右下是选择的功能代码展示,展示采用IDE风格,含复制代码功能。...使用document的createElement方法可以创建html元素;首先创建一个input元素;为body添加这个input元素;将要复制的内容赋值给input元素;选中input元素中的所有内容...; 使用document的execCommand方法进行拷贝当前选中内容到剪贴板;移除input元素。...('copy')) { document.execCommand('copy'); } transfer.blur(); document.body.removeChild(...; }}操作演示功能完成之后,我开始给我的朋友演示如何操作获取一段代码块。第一步选中一个想查看代码的功能项,比如性别(单选按钮)。第二步将查看的功能的代码进行复制。

    22510

    造一个 copy-to-clipboard 轮子

    大部分文章的做法是这样:创建一个输入框(input 或者 textarea),将复制文本赋值到元素的 value 值,JS 选中文本内容,最后使用 document.exec('copy') 完成复制。...这里的问题是,在某些环境下文本输入框会存在一些怪异的行为,比如: 如果不是文本输入标签,需要主动创建一个可输入文本的标签(input和textarea)然后将待复制的文本赋值给这个标签,再调用.select...()方法选中这个标签才能继续执行 document.execCommand('copy') 去复制。...上面逻辑很简单,创建 span 元素,从 textContent 加入复制文本。这里有人就问了:为啥不用 innerText 呢?他们有什么区别呢?...,这里要 try 一下 success = document.execCommand('copy') if (!

    1.1K30

    【译】JavaScript实现文字剪贴板&React版本

    怎么使用JavaScript实现一个剪贴板 具体分为五步 1、创建一个 textarea ,把需要的文本放进 textarea 中 2、将 textarea 元素插入 body 中。...3、使用 HTMLInputElement.select() 方法选择 textarea 中的文本内容 4、使用 document.execCommand('copy') 复制 textarea 中的文本内容到剪贴板...('copy'); document.body.removeChild(el); }; 思考一个问题 我们用户在使用我们的剪贴板之前可能已经选择了已存在 html 中的文本内容了,所以我们这里需要多加一些判断防止遗漏用户选择的文本...思路 1、首先创建一个 targetNode,设置绝对布局,赢藏我们的元素 2、document.getSelection() 已经由 window.getSelection() 替代了,具体流程如上...3、创建一个 result 标记能否能正常 使用剪贴功能,不能的返回 false 4、删除这个 targetNode function createNode(text) { const node

    1K20

    【译】JavaScript实现文字剪贴板&React版本

    怎么使用JavaScript实现一个剪贴板 具体分为五步 1、创建一个 textarea ,把需要的文本放进 textarea 中 2、将 textarea 元素插入 body 中。...3、使用 HTMLInputElement.select() 方法选择 textarea 中的文本内容 4、使用 document.execCommand('copy') 复制 textarea 中的文本内容到剪贴板...('copy'); document.body.removeChild(el); }; 复制代码 思考一个问题 我们用户在使用我们的剪贴板之前可能已经选择了已存在 html 中的文本内容了,所以我们这里需要多加一些判断防止遗漏用户选择的文本... 思路 1、首先创建一个 targetNode,设置绝对布局,赢藏我们的元素 2、document.getSelection() 已经由 window.getSelection...() 替代了,具体流程如上 3、创建一个 result 标记能否能正常 使用剪贴功能,不能的返回 false 4、删除这个 targetNode

    67910

    使用jQuery中hover事件时遇到的一个小问题

    它在鼠标移入的时候执行了一次,移出的时候又会执行一次(通过控制台查看可以看到我们代码中的console.log(1)中的1总共被输出了两次)。...搜索官方jQuery文档中hover()方法的说明我们就会发现,其实这是jQuery中hover()内置方法的问题。...jQuery中的hover()方法中一共封装有两个function函数,第一个是在移入时执行, 第二个是在移出时执行的,而当我们像上面一样只写了一个function函数的时候, 它就会默认这个function...当然,这个bug对于执行一些普通的效果是没什么影响的。 但是,当触及到跟时间有关的一些动画效果(例如:jQuery中的animate()函数)的时候, 就会出现问题。...之后其它每次移入时都将box这个元素的高度在原先的基础上增加50,下次再移入,再增加50的高度。

    2.5K20

    如何把Tomcat的日志实时输出到Web页面上

    先看效果 在部署状态页面点击查看日志,将会打开日志页面,下个图就是日志的输出页面。 简约时尚小清新的日志页面出来了,是不是很想一个terminal,有没有觉得俺弄的页面很漂亮。...Django部分 点击查看日志的链接之后会调到views里的ajxGetLog方法,该方法需要两个参数,项目id和主机id,这两个参数主要是用来确定日志文件的位置。该方法返回行号。...execcommand是封装的一个subprocess.Popen的一个工具函数,返回一个列表分别是标准输出,错误输出和shell returncode def ajxGetLog(request,pid...project.servicename])     #如果错误输出不为空,直接返回错误输出     if not res[1]:         try:             #res[0]为行号,如果大于20行,从当前行的上面.../jquery.min.js"> function myalert(){     alert("服务器提出了一个问题,请找运维寻求答案!")

    1.9K10
    领券