`

QQ聊天对话框(Js实现,支持表情插入文本中间)

 
阅读更多

一般我们做文本对话框,都考虑使用textarea,其实,用div也可以实现,用div的好处就是可以往里插入图片、表情等,不必都显示为字符。

但是在插入表情图片或插入图片时就面临一个问题,图片怎么才能放到我输入文本的中间位置,而不是每次都追加到最后面,百度搜索了很多资料,自己试过,包装好了两种方法,一种是针对div的,一种针对textarea,当然,textarea没法显示图片,只适用于插入表情后将代表表情的字符串插入到文本中间。

代码如下:

 

// 在光标位置插入内容(仅适用于textarea文本输入框)
function insertValueAtCursor(myField, insertContent) {
	if (myField != document.activeElement) {
		myField.value = myField.value + insertContent;
		return;
	}
	//IE support
	if (document.selection) {
		myField.focus();
		var sel = document.selection.createRange();
		sel.text = insertContent;
		sel.select();
	}
	//MOZILLA/NETSCAPE support
	else if (typeof myField.selectionStart === 'number' || typeof myField.selectionEnd == 'number') {
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		console.log("startPos:" + startPos)
			// save scrollTop before insert
		var restoreTop = myField.scrollTop;
		myField.value = myField.value.substring(0, startPos) + insertContent + myField.value.substring(endPos, myField.value.length);
		if (restoreTop > 0) {
			// restore previous scrollTop
			myField.scrollTop = restoreTop;
		}
		myField.focus();
		myField.selectionStart = startPos + insertContent.length;
		myField.selectionEnd = startPos + insertContent.length;
	} else {
		console.log('OK')
		myField.value += insertContent;
		myField.focus();
	}
}

 

 

// 在光标位置插入html代码,如果dom没有获取到焦点则追加到最后
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);
	}
}

 

附件中我上传整个demo源码。

分享到:
评论

相关推荐

    jQuery评论框插入QQ表情代码.zip

    总结,"jQuery评论框插入QQ表情代码"项目展示了如何利用jQuery实现富文本输入中的动态功能,提升了用户在评论过程中的参与度和乐趣。通过理解并掌握这些关键技术点,开发者可以为自己的网站或应用添加类似的功能,...

    光标处插入图片(类似于qq表情)

    在IT行业中,尤其是在文本编辑和富文本处理领域,"光标处插入图片(类似于qq表情)"是一个常见的功能需求。这个功能允许用户在文本输入时,像QQ聊天那样,在光标位置方便地插入图片,增强表达的生动性。下面将详细探讨...

    非常漂亮的仿QQ界面的JS提示框组件 javascript alert

    使用这个组件时,开发者可以通过调用特定的JavaScript函数,传入消息文本、按钮配置等参数,轻松地在页面上显示一个仿QQ风格的提示框。例如,可以有以下的API接口: ```javascript showQQAlert(message, options) {...

    vc htmlview

    在IT行业中,HTMLView是一种常见的技术,用于在Windows应用程序中嵌入HTML内容的显示,比如在Visual C++(VC)项目中。...理解并掌握这些知识点,你就可以构建一个功能丰富的、具有QQ表情支持的应用程序了。

    网页浮动QQ客服代码

    网页浮动QQ客服代码是一种常见的在线客户服务解决方案,它允许网站访客通过点击页面上的浮动图标或按钮,直接与企业的QQ客服人员进行实时交流。这种技术在电商、资讯网站以及各种在线服务行业中广泛应用,能够提高...

    可拖拽图片文本框(类似QQ发送消息框

    将base64编码的图片插入到一个支持富文本编辑的文本框(例如`&lt;textarea&gt;`或富文本编辑器)中,通常需要借助于JavaScript来实现。在base64编码前添加`data:image/jpeg;base64,`(或对应的图片类型)前缀,然后将整个...

    QQ客服代码

    通过合理的CSS设计、JavaScript实现以及有效的图片和文本资源,它可以无缝地融入网站,为用户提供方便、快捷的在线支持。为了确保最佳效果,开发者需要仔细阅读"说明.txt"文件,并根据指导正确地将所有这些元素整合...

    网页右侧漂浮的QQ客服代码

    在这里,`YOUR_QQ_NUMBER`需要替换为你的企业QQ号码,`website_name`可以是你的网站名称,这个链接会打开一个腾讯的预设对话窗口,访客无需登录QQ即可发起聊天。 为了确保代码的兼容性和用户体验,我们还需要考虑...

    web编辑器.rar

    同时,它被设计成类似于QQ聊天工具的样式,可能包含了一些交互性和视觉特效,如气泡对话框、动态表情、实时预览等功能。这种编辑器对于创建互动性强、用户体验良好的网页内容非常有用,尤其是对于需要在线沟通或协作...

    图文并排加 点击事件

    综上所述,实现"图文并排加点击事件"和"qq表情弹框"的功能,需要掌握HTML/CSS布局技巧,JavaScript事件处理,以及表情库的使用。在实际项目中,这些技术常结合前端框架一起使用,以提高开发效率和用户体验。...

    JavaScript应用177例

    实例代码: 第1章(\cha01) ...第2章(\cha02) ...第3章(\cha03) ... 3.3.htm 用对象的方式实现数组 ... 3.6.htm 实现多维数组 ... 4.5.htm 实现计算器 ... \36.2\ Default.aspx 实现文本聊天室

    输入框插件

    或者提供表情选择器,让用户可以插入丰富的表情图标;还有可能支持Markdown或BBCode语法,方便用户格式化文本。这些功能都是为了使论坛交流更加便捷和生动。 模仿QQ输入框的设计,意味着该插件会包含QQ输入框的一些...

    ASP实例开发源码-右侧浮动qq客服代码 asp版.zip

    3. **JavaScript/jQuery**:为了实现QQ客服的交互功能,如点击显示/隐藏对话框,可能需要使用JavaScript或者jQuery库。jQuery简化了DOM操作和事件处理,使得在ASP页面上添加交互性变得更加容易。 4. **ASP变量和...

    程序天下:JavaScript实例自学手册

    3.31 自动插入文本 3.32 选取textarea的指定行 3.33 文本放大镜 3.34 文本框的默认输入法 3.35 文本框显示网页中选中的内容 3.36 文字的垂直滚动 3.37 文字幻灯片 3.38 随机动态文字效果 3.39 实现textarea的自动...

    js右侧栏代码特效.zip

    2. **客服联系信息**:JavaScript可以用来动态显示或隐藏客服QQ号和电话号码,或者当用户点击时弹出对话框或者跳转至聊天窗口。 3. **返回顶部按钮**:这是一个常见的用户体验功能,当用户滚动页面时,此按钮会出现...

    《程序天下:JavaScript实例自学手册》光盘源码

    3.31 自动插入文本 3.32 选取textarea的指定行 3.33 文本放大镜 3.34 文本框的默认输入法 3.35 文本框显示网页中选中的内容 3.36 文字的垂直滚动 3.37 文字幻灯片 3.38 随机动态文字效果 3.39 实现textarea的自动...

    js视频笔记

    - JavaScript 提供了多种输出方法,如 `alert()` 可以弹出对话框显示信息,`document.write()` 则可以在文档中插入文本。 ### 在 HTML 中使用 JavaScript - **内联脚本**:可以使用 `&lt;script&gt;` 标签将 JavaScript ...

    CKEditor添加HTML5 Video插件的方法

    该对话框允许指定的海报图像,尺寸(他们是根据预览自动调整)和两个源文件,这样既使用了WebM格式(Chrome浏览器,Firefox和Opera),并且只支持H264的那些浏览器(IE9和Safari浏览器)可以查看您的视频

    kindeditor上传视频、图片功能实现

    KindEditor是一款开源的JavaScript富文本编辑器,常用于网页中提供文本编辑功能。它支持多种浏览器,包括IE6、Firefox、Chrome、Safari和Opera等。在“kindeditor上传视频、图片功能实现”中,我们将探讨如何利用...

Global site tag (gtag.js) - Google Analytics