怎样在网页制作中的聊天室中添加表情图片?

怎样在网页制作中的聊天室中添加表情图片?,第1张

我以前也做过个简单的聊天室,后来因为另有任务没有做完,不过表情还是基本实现了,和你交流一下希望对你有点帮助。我的原理是这样的:

因为我发言用的是文本框,而文本框不支持图片,所以只能用符号来代替,用户选择图片后保存的实际是该图片所对应的符号,显示时再判断一下发言内容是否包含那些符号。如果有的话则把该符号转换成所对应图片的路径就好了。图片可以到网上找,符号可以在msn里找到,在msn聊天窗口->选择图片->其他,可以看到图片对应的符号,如果你直接在msn里输入符号它自动会转换成图片,可是文本框不行。听说网上有个FreeTextBox好用,可我用不来。

在html里有个隐藏层(div)里面是一个表格存放表情

然后页面上有个表情图片点击可控制 层的显示和隐藏

用户点击某个表情后就得到了个符号。

下面的html代码主要是隐藏层的实现和符号的取得贴出来你参考一下。当然你也可以将全部表情放在页面上然后用"radio"或"checkBox"选这样可能更简单点,至于后台符号转换成图片,开发语言可能不同你自己研究一下吧

<%@ Page language="c#" Codebehind="frmSend.aspx.cs" AutoEventWireup="false" Inherits="ChatRoom.Page.frmSend" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

<HEAD>

<title>frmSend</title>

<script language="javascript">

function doSubmit()

{

var user=document.all("txtUser")

var objUser=document.all("txtObjUser")

if(user.value==objUser.value)

{

alert("ト嵂サトワム。ヤ�ヘラヤシコチトフ・")

objUser.value="all"

return false

}

if(document.all("cbChat").checked)

{

if(document.all("txtObjUser").value=="all" || document.all("txtObjUser").value=="All")

{

alert("ヒスチトカヤマ�サトワホェall")

return false

}

}

return true

}

ie4=(document.all)?true:false

ns4=(document.layers)?true:false

function toExit()

{

var args=toExit.arguments

var visible=args[0]

if(ns4)

{

theObj=eval("document.layers[\'"+args[1]+"\']")

if(theObj)theObj.visibility=visible

}

else if(ie4)

{

if(visible=='show')visible='visible'

if(visible=='hide')visible='hidden'

theObj=document.all("Layer1")

if(theObj)theObj.style.visibility=visible

}

}

function doClick(em)

{

var txt=document.all("txtMessage").value

txt+=em

document.all("txtMessage").value=txt

document.all("hidEmotion").value=em

toExit('hide','boysoft')

}

function doBold()

{

var word=document.all("txtMessage")

if (word.style.fontWeight == "bold")

{

word.style.fontWeight = "normal"

document.all("hidBold").value=""

}

else

{

word.style.fontWeight = "bold"

document.all("hidBold").value="bold"

}

event.cancelBubble = true

event.returnValue = false

}

function doItalic()

{

var txt=document.getElementById("txtMessage")

if(txt.style.fontStyle=="italic")

{

txt.style.fontStyle="normal"

document.all("hidItalic").value=""

}

else

{

txt.style.fontStyle="italic"

document.all("hidItalic").value="italic"

}

}

function doShowColor()

{

var args=doShowColor.arguments

var visible=args[0]

if(ns4)

{

theObj=eval("document.layers[\'"+args[1]+"\']")

if(theObj)theObj.visibility=visible

}

else if(ie4)

{

if(visible=='show')visible='visible'

if(visible=='hide')visible='hidden'

theObj=document.all("Layer3")

if(theObj)theObj.style.visibility=visible

}

}

function doHidde()

{

toExit('hide','boysoft')

doShowColor('hide','boysoft')

}

function doSetColor(id)

{

var txt=document.getElementById("txtMessage")

var imgColor=document.getElementById("imgColor")

txt.style.color=id

document.all("hidColor").value=id

imgColor.style.backgroundColor=id

doShowColor('hide','boysoft')

}

function doFontChange(txtFont)

{

if(txtFont=="Font")

{

return

}

document.getElementById("txtMessage").style.fontFamily=txtFont

document.all("hidFont").value=txtFont

}

function doSizeChang(txtSize)

{

if(txtSize=="Size")

{

return

}

document.getElementById("txtMessage").style.fontSize=txtSize

document.all("hidSize").value=txtSize

}

</script>

<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">

<meta content="C#" name="CODE_LANGUAGE">

<meta content="JavaScript" name="vs_defaultClientScript">

<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">

<script language="JavaScript" type="text/JavaScript">

<!--

function MM_reloadPage(init) { //reloads the window if Nav4 resized

if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {

document.MM_pgW=innerWidthdocument.MM_pgH=innerHeightonresize=MM_reloadPage}}

else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload()

}

MM_reloadPage(true)

//-->

</script>

<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">

<meta content="C#" name="CODE_LANGUAGE">

<meta content="JavaScript" name="vs_defaultClientScript">

<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">

<script language="JavaScript" type="text/JavaScript">

<!--

function MM_reloadPage(init) { //reloads the window if Nav4 resized

if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {

document.MM_pgW=innerWidthdocument.MM_pgH=innerHeightonresize=MM_reloadPage}}

else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload()

}

MM_reloadPage(true)

//-->

</script>

</HEAD>

<body onmousedown="doHidde()" bgColor="#edf1fa" onload="document.Form1.txtMessage.focus()"

MS_POSITIONING="GridLayout">

<form id="Form1" onsubmit="javascript:return doSubmit()" method="post" runat="server">

<INPUT id="hidBold" style="Z-INDEX: 103LEFT: 64pxWIDTH: 152pxPOSITION: absoluteTOP: 216pxHEIGHT: 22px"

type="hidden" size="20" name="hidBold"><INPUT id="hidEmotion" style="Z-INDEX: 109LEFT: 64pxPOSITION: absoluteTOP: 416px"

type="hidden" name="Hidden6" runat="server"><INPUT id="hidColor" style="Z-INDEX: 108LEFT: 64pxPOSITION: absoluteTOP: 448px" type="hidden"

name="Hidden7" runat="server"><INPUT id="hidFont" style="Z-INDEX: 107LEFT: 64pxPOSITION: absoluteTOP: 344px" type="hidden"

name="Hidden4" runat="server"><INPUT id="hidSize" style="Z-INDEX: 106LEFT: 64pxPOSITION: absoluteTOP: 376px" type="hidden"

name="Hidden5" runat="server"><INPUT id="hidUnderLine" style="Z-INDEX: 105LEFT: 64pxPOSITION: absoluteTOP: 304px"

type="hidden" name="Hidden3" runat="server"><INPUT id="hidItalic" style="Z-INDEX: 104LEFT: 64pxPOSITION: absoluteTOP: 256px"

type="hidden" name="Hidden2" runat="server">

<TABLE id="Table1" style="WIDTH: 712pxHEIGHT: 112px" cellSpacing="1" cellPadding="1"

width="712" border="1">

<TR>

<TD><span title="bold"><IMG onclick="doBold()" src="../images/bold.gif"> </SAPN><span title="italic" onclick="doItalic()"><IMG src="../images/italic.gif"></span><span title="underline" onclick="doUnderline()"><IMG src="../images/underline.gif"></span><span title="Font Color"><IMG id="imgColor" style="BACKGROUND-COLOR: black" onclick="doShowColor('show','boysoft')"

src="../images/colourpick.gif" runat="server"></span> <SELECT onchange="doFontChange(this.value)" name="ddFont" id="Select1" runat="server">

<OPTION value="Font" selected>Font</OPTION>

<OPTION value="Arial">Arial</OPTION>

<OPTION value="Verdana">Verdana</OPTION>

<OPTION value="Comic Sans MS">Comic Sans MS</OPTION>

<OPTION value="Courier">Courier</OPTION>

<OPTION value="Georgia">Georgia</OPTION>

<OPTION value="Impact">Impact</OPTION>

<OPTION value="Lucida Console">Lucida Console</OPTION>

<OPTION value="Tahoma">Tahoma</OPTION>

<OPTION value="Times New Roman">Times New Roman</OPTION>

<OPTION value="Wingdings">Wingdings</OPTION>

</SELECT><SELECT onchange="doSizeChang(this.value)" name="ddSize" id="Select2" runat="server">

<OPTION value="Size" selected>Size</OPTION>

<OPTION value="12px">12</OPTION>

<OPTION value="13px">13</OPTION>

<OPTION value="14px">14</OPTION>

<OPTION value="15px">15</OPTION>

<OPTION value="16px">16</OPTION>

<OPTION value="17px">17</OPTION>

<OPTION value="18px">18</OPTION>

<OPTION value="19px">19</OPTION>

<OPTION value="20px">20</OPTION>

<OPTION value="21px">21</OPTION>

<OPTION value="22px">22</OPTION>

<OPTION value="23px">23</OPTION>

<OPTION value="24px">24</OPTION>

<OPTION value="25px">25</OPTION>

<OPTION value="26px">26</OPTION>

<OPTION value="27px">27</OPTION>

<OPTION value="28px">28</OPTION>

<OPTION value="29px">29</OPTION>

<OPTION value="30px">30</OPTION>

<OPTION value="31px">31</OPTION>

<OPTION value="32px">32</OPTION>

</SELECT> <span title="insert emotions"><IMG onclick="toExit('show','boysoft')" src="../images/emotion.gif"></span> <span title="sign out">

<asp:imagebutton id="ibExit" runat="server" ImageUrl="../images/logoff.gif"></asp:imagebutton></span></span>

<div id="Layer1" style="BORDER-RIGHT: #000000 1pxBORDER-TOP: #000000 1pxZ-INDEX: 101LEFT: 286pxVISIBILITY: hiddenBORDER-LEFT: #000000 1pxWIDTH: 200pxBORDER-BOTTOM: #000000 1pxPOSITION: absoluteTOP: 48pxHEIGHT: 115px">

<table cellPadding="0" width="200" bgColor="#ffffff" border="1">

<tr>

<td><IMG onmouseup="doClick('(A)')" height="19" src="../images/emangel.gif" width="19" name="emangel"></td>

<td><IMG onmouseup="doClick(':@ (')" height="19" src="../images/emangry.gif" width="19" name="emangry"></td>

<td><IMG onmouseup="doClick('(B)')" height="19" src="../images/embeer.gif" width="19" name="embeer"></td>

<td><IMG onmouseup="doClick('(^)')" height="19" src="../images/emcake.gif" width="19"></td>

<td><IMG onmouseup="doClick('(@)')" height="19" src="../images/emcat.gif" width="19"></td>

<td><IMG onmouseup="doClick('(O)')" height="19" src="../images/emclock.gif" width="19"></td>

<td><IMG onmouseup="doClick('(D)')" height="19" src="../images/emcocktl.gif" width="19"></td>

<td><IMG onmouseup="doClick(':S')" height="19" src="../images/emcrook.gif" width="19"></td>

</tr>

<tr>

<td><IMG onmouseup="doClick(':。ョ(')" height="19" src="../images/emcry.gif" width="19"></td>

<td><IMG onmouseup="doClick(':|')" height="19" src="../images/emdgust.gif" width="19"></td>

<td><IMG onmouseup="doClick('(&)')" height="19" src="../images/emdog.gif" width="19"></td>

<td><IMG onmouseup="doClick(':$')" height="19" src="../images/emembarrassed.gif" width="19"></td>

<td><IMG onmouseup="doClick('(X)')" height="19" src="../images/emfemale.gif" width="19"></td>

<td><IMG onmouseup="doClick('(~)')" height="19" src="../images/emfilm.gif" width="19"></td>

<td><IMG onmouseup="doClick('(G)')" height="19" src="../images/emgift.gif" width="19"></td>

<td><IMG onmouseup="doClick('(})')" height="19" src="../images/emhug2.gif" width="19"></td>

</tr>

<tr>

<td><IMG onmouseup="doClick('({)')" height="19" src="../images/emhug.gif" width="19"></td>

<td><IMG onmouseup="doClick('(K)')" height="19" src="../images/emlips.gif" width="19"></td>

<td><IMG onmouseup="doClick('8-|')" height="19" src="../images/17.gif" width="19"></td>

<td><IMG onmouseup="doClick('(L)')" height="19" src="../images/emlove.gif" width="19"></td>

<td><IMG onmouseup="doClick('(Z)')" height="19" src="../images/emmale.gif" width="19"></td>

<td><IMG onmouseup="doClick('(M)')" height="19" src="../images/emmessag.gif" width="19"></td>

<td><IMG onmouseup="doClick('(S)')" height="19" src="../images/emmoon.gif" width="19"></td>

<td><IMG onmouseup="doClick('(8)')" height="19" src="../images/emnote.gif" width="19"></td>

</tr>

<tr>

<td><IMG onmouseup="doClick('(T)')" height="19" src="../images/emphone.gif" width="19"></td>

<td><IMG onmouseup="doClick('(P)')" height="19" src="../images/emphoto.gif" width="19"></td>

<td><IMG onmouseup="doClick('(F)')" height="19" src="../images/emrose.gif" width="19"></td>

<td><IMG onmouseup="doClick('(W)')" height="19" src="../images/emrosesad.gif" width="19"></td>

<td><IMG onmouseup="doClick(':(')" height="19" src="../images/emsad.gif" width="19"></td>

<td><IMG onmouseup="doClick(':)')" height="19" src="../images/emsmile.gif" width="19"></td>

<td><IMG onmouseup="doClick('(H)')" height="19" src="../images/emsmiled.gif" width="19"></td>

<td><IMG onmouseup="doClick(':-O')" height="19" src="../images/emsmileo.gif" width="19"></td>

</tr>

<tr>

<td><IMG onmouseup="doClick(':P')" height="19" src="../images/emsmilep.gif" width="19"></td>

<td><IMG onmouseup="doClick('(*)')" height="19" src="../images/emstar.gif" width="19"></td>

<td><IMG onmouseup="doClick('(C)')" height="19" src="../images/emtea.gif" width="19"></td>

<td><IMG onmouseup="doClick(':D')" height="19" src="../images/emteeth.gif" width="19"></td>

<td><IMG onmouseup="doClick('(N)')" height="19" src="../images/emthdown.gif" width="19"></td>

<td><IMG onmouseup="doClick('(Y)')" height="19" src="../images/emthup.gif" width="19"></td>

<td><IMG onmouseup="doClick('(U)')" height="19" src="../images/emunlove.gif" width="19"></td>

<td><IMG onmouseup="doClick(')')" height="19" src="../images/emwink.gif" width="19"></td>

</tr>

</table>

</div>

</TD><!--font style="FONT-WEIGHT: boldFONT-SIZE: 30pxCOLOR: redFONT-STYLE: italicFONT-FAMILY: 'Arial Black'TEXT-DECORATION: underline"--></TR>

<TR>

<TD style="HEIGHT: 53px"><asp:textbox id="txtMessage" ForeColor="" runat="server" Width="576px" Height="43px"></asp:textbox><asp:button id="btSay" runat="server" Height="42px" Text="send"></asp:button></TD>

</TR>

<TR>

<TD><asp:textbox id="txtUser" runat="server" Width="120px" ReadOnly="True" BorderStyle="Groove" BackColor="#EDF1FA"

ForeColor="Black"></asp:textbox><asp:label id="Label2" runat="server">to</asp:label><FONT face="ヒホフ・><FONT face="ヒホフ・><asp:textbox id="txtObjUser" runat="server" Width="120px" ReadOnly="True" BorderStyle="Groove"

BackColor="#EDF1FA"></asp:textbox></FONT></FONT><FONT face="ヒホフ・></FONT><asp:checkbox id="cbChat" runat="server" Text="Whisper "></asp:checkbox></TD>

</TR>

</TABLE>

</form>

<div id="Layer3" style="Z-INDEX: 102LEFT: 87pxVISIBILITY: hiddenWIDTH: 115pxPOSITION: absoluteTOP: 49pxHEIGHT: 73px">

<table borderColor="#c0c0c0" height="60" cellPadding="0" width="114" border="1">

<tr>

<td onmousedown="doSetColor('#FF0000')" width="12" bgColor="#ff0000"> </td>

<td onmousedown="doSetColor('#00ff00')" width="12" bgColor="#00ff00"> </td>

<td onmousedown="doSetColor('#0000ff')" width="12" bgColor="#0000ff"> </td>

<td onmousedown="doSetColor('#ffff00')" width="12" bgColor="#ffff00"> </td>

<td onmousedown="doSetColor('#00ffff')" width="12" bgColor="#00ffff"> </td>

<td onmousedown="doSetColor('#ff00ff')" width="14" bgColor="#ff00ff"> </td>

<td onmousedown="doSetColor('#000000')" width="10" bgColor="#000000"> </td>

</tr>

<tr>

<td onmousedown="doSetColor('#ff8040')" bgColor="#ff8040"> </td>

<td onmousedown="doSetColor('#0080ff')" bgColor="#0080ff"> </td>

<td onmousedown="doSetColor('#408080')" bgColor="#408080"> </td>

<td onmousedown="doSetColor('#c0c0c0')" bgColor="#c0c0c0"> </td>

<td onmousedown="doSetColor('#0000a0')" bgColor="#0000a0"> </td>

<td onmousedown="doSetColor('#8000ff')" bgColor="#8000ff"> </td>

<td onmousedown="doSetColor('#ff80ff')" bgColor="#ff80ff"> </td>

</tr>

<tr>

<td onmousedown="doSetColor('#8080c0')" bgColor="#8080c0"> </td>

<td onmousedown="doSetColor('#008040')" bgColor="#008040"> </td>

<td onmousedown="doSetColor('#808040')" bgColor="#808040"> </td>

<td onmousedown="doSetColor('#99cc33')" bgColor="#99cc33"> </td>

<td onmousedown="doSetColor('#00ff80')" bgColor="#00ff80"> </td>

<td onmousedown="doSetColor('#ff3399')" bgColor="#ff3399"> </td>

<td onmousedown="doSetColor('#ff8080')" bgColor="#ff8080"> </td>

</tr>

</table>

</div>

</body>

</HTML>

代码1:div 设置contenteditable等于true作为编辑框时的光标位置插入文本

/**

*光标位置插入

* 参数1 string 要插入的内容

* 参数2 bool true 插入后选中插入内容,false不选中

**/function pasteHtmlAtCaret(html, selectPastedContent) {

var sel, range

if (window.getSelection) {

// IE9 and non-IE

sel = window.getSelection()

if (sel.getRangeAt &&sel.rangeCount) {

range = sel.getRangeAt(0)

range.deleteContents()

// Range.createContextualFragment() would be useful here but is

// only relatively recently standardized and is not supported in

// some 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)

}

var firstNode = frag.firstChild

range.insertNode(frag)

// Preserve the selection

if (lastNode) {

range = range.cloneRange()

range.setStartAfter(lastNode)

if (selectPastedContent) {

range.setStartBefore(firstNode)

} else {

range.collapse(true)

}

sel.removeAllRanges()

sel.addRange(range)

}

}

} else if ( (sel = document.selection) &&sel.type != "Control") {

// IE <9

var originalRange = sel.createRange()

originalRange.collapse(true)

sel.createRange().pasteHTML(html)

if (selectPastedContent) {

range = sel.createRange()

range.setEndPoint("StartToStart", originalRange)

range.select()

}

}

}

代码2:textarea 光标位置插入文本

//JQ 扩展

(function ($) {

$.fn.extend({

insertAtCaret: function (myValue) {

var $t = $(this)[0]

if (document.selection) {

this.focus()

sel = document.selection.createRange()

sel.text = myValue

this.focus()

} else{

if ($t.selectionStart || $t.selectionStart == '0') {

var startPos = $t.selectionStart

var endPos = $t.selectionEnd

var scrollTop = $t.scrollTop

$t.value = $t.value.substring(0, startPos) + myValue + $t.value.substring(endPos, $t.value.length)

this.focus()

$t.selectionStart = startPos + myValue.length

$t.selectionEnd = startPos + myValue.length

$t.scrollTop = scrollTop

} else {

this.value += myValue

this.focus()

}

}

}

})

})(jQuery)

asp.net做悬浮DIV效果,就是设置一个悬浮DIVlocation紧跟在按钮下,在div里插入多个有序<image src="path">标签, 输入的字体跟命名空间毫无关系,字体大小可以用输入框style里的text属性来控制


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/11828548.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存