I am making a spell checker. The reqest sends out the text and gets
back HTML of the suggestions and misspelled words. When you click on a
misspelled word the suggestion list pops up and you can select a
suggestion and the word will change. All of the functionality works
fine. My problema is in Firefox, if I click on a word to show
sugggestions, and then run the spell check again, and then click on
that same word, the suggestion list does not pop up. For example, I
click 'Check Spelling' then I click 'si' the sugggestion pop up, I can
fix it or mouse out and leave it alone. If I click 'Check Spelling'
again and click 'si' the list will not appear, but the function does
execute. If I click a word I didnt click last time, the list will
appear. the function showSuggestions (e,element) function executes
bacuse I put an alert to make sure it was running.
I have included my code.
*********Here is the javascript:
//Begin JS
var xmlHttp;
function fixSpelling(new Word,element,el ementToHide) {
element.innerHT ML = newWord;
element.classNa me = "noSpellErr or";
hideSuggestion2 (elementToHide) ;
}
function showSuggestions (e,element) {
var posx = 0;
var posy = 0;
if (!e) var e = window.event;
if (e.pageX || e.pageY)
{
posx = e.pageX;
posy = e.pageY;
}
else if (e.clientX || e.clientY)
{
posx = e.clientX + document.body.s crollLeft;
posy = e.clientY + document.body.s crollTop;
}
alert(posx + " - " + posy);
//alert(element.i nnerHTML);
element.style.l eft=posx-10;
element.style.t op=posy-10;
element.style.d isplay="block";
}
function hiLight() {
}
function hideSuggestion( e,element) {
if (!e) var e = window.event;
var tg = (window.event) ? e.srcElement : e.target;
if(tg.id == element.id) {
element.style.d isplay="none";
}
}
function hideSuggestion2 (element) {
element.style.d isplay="none";
}
function spellCheck() {
try{
var
url="SpellCheck Servlet?text="+ document.getEle mentById("textA rea").value;
xmlHttp=GetXmlH ttpObject(state Changed);
xmlHttp.open("P OST", url , true);
xmlHttp.send(nu ll);
} catch (e) {
alert(e);
return;
}
document.getEle mentById("messa ge").innerHTML= "Loading ... <img
src=\"anicircle .gif\"/>";
}
function stateChanged() {
if (xmlHttp.readyS tate==4 || xmlHttp.readySt ate=="complete" ) {
document.getEle mentById("messa ge").innerHTML= xmlHttp.respons eText;
//alert(xmlHttp.r esponseText);
}
}
function GetXmlHttpObjec t(handler) {
var objXmlHttp=null ;
if (navigator.user Agent.indexOf(" Opera")>=0) {
alert("This example doesn't work in Opera");
return;
}
if (navigator.user Agent.indexOf(" MSIE")>=0) {
var strName="Msxml2 .XMLHTTP";
if (navigator.appV ersion.indexOf( "MSIE 5.5")>=0) {
strName="Micros oft.XMLHTTP";
}
try
{
objXmlHttp=new ActiveXObject(s trName);
objXmlHttp.onre adystatechange= handler;
return objXmlHttp;
}
catch(e)
{
alert("Error. Scripting for ActiveX might be disabled");
return;
}
}
if (navigator.user Agent.indexOf(" Mozilla")>=0){
objXmlHttp=new XMLHttpRequest( );
objXmlHttp.onlo ad=handler;
objXmlHttp.oner ror=handler;
return objXmlHttp;
}
}
//End JS
*************** ***Here is the HTML:
<html>
<head>
<script src="altest.js" ></script>
<link rel="stylesheet " type="text/css" href="spellchec k.css" />
</head>
<body>
<a href="javascrip t:spellCheck()" >SpellCheck!</a><br/>
<form id="theForm">
<textarea id="textArea">T eh coloor si kewl</textarea>
</form>
<div id="message">
</div>
</body>
</html>
Here is the CSS:
span.spellError {
border-bottom:1px dashed red;
cursor:pointer;
}
span.noSpellErr or {
border-bottom:0px none;
cursor:defualt;
}
div.spellCheck {
border:1px solid black;
padding:3px 3px 3px 3px;
}
div.suggestionL ist {
border:1px solid #00aeff;
background-color:#e7f7ff;
display:none;
position:absolu te;
padding:3px 3px 3px 3px;
}
div.suggestion {
cursor:pointer;
}
div.suggestion: hover {
background-color:rgb(210,2 34,251);
}
*************** **And here is the data returned by the SpellCheck
servlet:
<div id="spellCheck " class="spellChe ck"><span class="spellErr or"
id="Teh_span" onClick="showSu ggestions(event ,Teh)">Teh</span> <span
class="spellErr or" id="coloor_span "
onClick="showSu ggestions(event ,coloor)">coloo r</span> <span
class="spellErr or" id="si_span"
onClick="showSu ggestions(event ,si)">si</span> <span class="spellErr or"
id="kewl_span" onClick="showSu ggestions(event ,kewl)">kewl</span></div>
<div class="suggesti onList" id="si"
onMouseOut="hid eSuggestion(eve nt,si)" style="width:50 px">
<div class="suggesti on" id="six"
onClick="fixSpe lling('six',si_ span,si)">six</div>
<div class="suggesti on" id=" psi" onClick="fixSpe lling('
psi',si_span,si )"> psi</div>
<div class="suggesti on" id=" sib" onClick="fixSpe lling('
sib',si_span,si )"> sib</div>
<div class="suggesti on" id=" sic" onClick="fixSpe lling('
sic',si_span,si )"> sic</div>
<div class="suggesti on" id=" sin" onClick="fixSpe lling('
sin',si_span,si )"> sin</div>
<div class="suggesti on" id=" sip" onClick="fixSpe lling('
sip',si_span,si )"> sip</div>
<div class="suggesti on" id=" sir" onClick="fixSpe lling('
sir',si_span,si )"> sir</div>
<div class="suggesti on" id=" sis" onClick="fixSpe lling('
sis',si_span,si )"> sis</div>
<div class="suggesti on" id=" sit" onClick="fixSpe lling('
sit',si_span,si )"> sit</div>
<div class="suggesti on" id=" ski" onClick="fixSpe lling('
ski',si_span,si )"> ski</div>
<div class="suggesti on" id=" Sid" onClick="fixSpe lling('
Sid',si_span,si )"> Sid</div>
<div class="suggesti on" id=" Sir" onClick="fixSpe lling('
Sir',si_span,si )"> Sir</div>
<div class="suggesti on" id=" Sri" onClick="fixSpe lling('
Sri',si_span,si )"> Sri</div>
<div class="suggesti on" id=" SSI" onClick="fixSpe lling('
SSI',si_span,si )"> SSI</div>
<div class="suggesti on" id=" SDI" onClick="fixSpe lling('
SDI',si_span,si )"> SDI</div>
<div class="suggesti on" id=" said" onClick="fixSpe lling('
said',si_span,s i)"> said</div>
</div>
<div class="suggesti onList" id="Teh"
onMouseOut="hid eSuggestion(eve nt,Teh)" style="width:70 px">
<div class="suggesti on" id="T eh" onClick="fixSpe lling('T
eh',Teh_span,Te h)">T eh</div>
<div class="suggesti on" id=" Eh" onClick="fixSpe lling('
Eh',Teh_span,Te h)"> Eh</div>
<div class="suggesti on" id=" Tehran" onClick="fixSpe lling('
Tehran',Teh_spa n,Teh)"> Tehran</div>
<div class="suggesti on" id=" 4th" onClick="fixSpe lling('
4th',Teh_span,T eh)"> 4th</div>
<div class="suggesti on" id=" 5th" onClick="fixSpe lling('
5th',Teh_span,T eh)"> 5th</div>
<div class="suggesti on" id=" 6th" onClick="fixSpe lling('
6th',Teh_span,T eh)"> 6th</div>
<div class="suggesti on" id=" 7th" onClick="fixSpe lling('
7th',Teh_span,T eh)"> 7th</div>
<div class="suggesti on" id=" 8th" onClick="fixSpe lling('
8th',Teh_span,T eh)"> 8th</div>
<div class="suggesti on" id=" 9th" onClick="fixSpe lling('
9th',Teh_span,T eh)"> 9th</div>
<div class="suggesti on" id=" THC" onClick="fixSpe lling('
THC',Teh_span,T eh)"> THC</div>
<div class="suggesti on" id=" Ute" onClick="fixSpe lling('
Ute',Teh_span,T eh)"> Ute</div>
<div class="suggesti on" id=" Ate" onClick="fixSpe lling('
Ate',Teh_span,T eh)"> Ate</div>
<div class="suggesti on" id=" Nth" onClick="fixSpe lling('
Nth',Teh_span,T eh)"> Nth</div>
<div class="suggesti on" id=" Rte" onClick="fixSpe lling('
Rte',Teh_span,T eh)"> Rte</div>
<div class="suggesti on" id=" Tae" onClick="fixSpe lling('
Tae',Teh_span,T eh)"> Tae</div>
<div class="suggesti on" id=" Thy" onClick="fixSpe lling('
Thy',Teh_span,T eh)"> Thy</div>
</div>
<div class="suggesti onList" id="coloor"
onMouseOut="hid eSuggestion(eve nt,coloor)" style="width:10 0px">
<div class="suggesti on" id="colour"
onClick="fixSpe lling('colour', coloor_span,col oor)">colour</div>
<div class="suggesti on" id=" colours" onClick="fixSpe lling('
colours',coloor _span,coloor)"> colours</div>
<div class="suggesti on" id=" Colorado" onClick="fixSpe lling('
Colorado',coloo r_span,coloor)" > Colorado</div>
<div class="suggesti on" id=" colorant" onClick="fixSpe lling('
colorant',coloo r_span,coloor)" > colorant</div>
<div class="suggesti on" id=" colorize" onClick="fixSpe lling('
colorize',coloo r_span,coloor)" > colorize</div>
<div class="suggesti on" id=" colloq" onClick="fixSpe lling('
colloq',coloor_ span,coloor)"> colloq</div>
<div class="suggesti on" id=" choler" onClick="fixSpe lling('
choler',coloor_ span,coloor)"> choler</div>
<div class="suggesti on" id=" coiler" onClick="fixSpe lling('
coiler',coloor_ span,coloor)"> coiler</div>
<div class="suggesti on" id=" colorants" onClick="fixSpe lling('
colorants',colo or_span,coloor) "> colorants</div>
<div class="suggesti on" id=" colorcast" onClick="fixSpe lling('
colorcast',colo or_span,coloor) "> colorcast</div>
<div class="suggesti on" id=" colorings" onClick="fixSpe lling('
colorings',colo or_span,coloor) "> colorings</div>
<div class="suggesti on" id=" colorized" onClick="fixSpe lling('
colorized',colo or_span,coloor) "> colorized</div>
<div class="suggesti on" id=" colorizes" onClick="fixSpe lling('
colorizes',colo or_span,coloor) "> colorizes</div>
<div class="suggesti on" id=" coloured" onClick="fixSpe lling('
coloured',coloo r_span,coloor)" > coloured</div>
<div class="suggesti on" id=" colourer" onClick="fixSpe lling('
colourer',coloo r_span,coloor)" > colourer</div>
<div class="suggesti on" id=" caloric" onClick="fixSpe lling('
caloric',coloor _span,coloor)"> caloric</div>
</div>
<div class="suggesti onList" id="kewl"
onMouseOut="hid eSuggestion(eve nt,kewl)" style="width:70 px">
<div class="suggesti on" id="knew"
onClick="fixSpe lling('knew',ke wl_span,kewl)"> knew</div>
<div class="suggesti on" id=" keel" onClick="fixSpe lling('
keel',kewl_span ,kewl)"> keel</div>
<div class="suggesti on" id=" skew" onClick="fixSpe lling('
skew',kewl_span ,kewl)"> skew</div>
<div class="suggesti on" id=" Kiel" onClick="fixSpe lling('
Kiel',kewl_span ,kewl)"> Kiel</div>
<div class="suggesti on" id=" mewl" onClick="fixSpe lling('
mewl',kewl_span ,kewl)"> mewl</div>
<div class="suggesti on" id=" el" onClick="fixSpe lling('
el',kewl_span,k ewl)"> el</div>
<div class="suggesti on" id=" knell" onClick="fixSpe lling('
knell',kewl_spa n,kewl)"> knell</div>
<div class="suggesti on" id=" knelt" onClick="fixSpe lling('
knelt',kewl_spa n,kewl)"> knelt</div>
<div class="suggesti on" id=" jewel" onClick="fixSpe lling('
jewel',kewl_spa n,kewl)"> jewel</div>
<div class="suggesti on" id=" keels" onClick="fixSpe lling('
keels',kewl_spa n,kewl)"> keels</div>
<div class="suggesti on" id=" kneel" onClick="fixSpe lling('
kneel',kewl_spa n,kewl)"> kneel</div>
<div class="suggesti on" id=" kwela" onClick="fixSpe lling('
kwela',kewl_spa n,kewl)"> kwela</div>
<div class="suggesti on" id=" El" onClick="fixSpe lling('
El',kewl_span,k ewl)"> El</div>
<div class="suggesti on" id=" kW" onClick="fixSpe lling('
kW',kewl_span,k ewl)"> kW</div>
<div class="suggesti on" id=" mewls" onClick="fixSpe lling('
mewls',kewl_spa n,kewl)"> mewls</div>
<div class="suggesti on" id=" knells" onClick="fixSpe lling('
knells',kewl_sp an,kewl)"> knells</div>
</div>
Any suggestions?
Thanks
Rich