<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<textarea rows="7" cols="49" id="box" onclick="tellPoint()"></textarea>
<script language="javascript">
function tellPoint()
{
var rng = event.srcElement.createTextRange();
rng.moveToPoint(event.x,event.y);
rng.moveStart("character",-event.srcElement.value.length);
pnum.value = rng.text.length;
}
</script> <p></p> 
光标位置:<input type="text" value="0" id="pnum" size="8"/>
</body>
</html>
解决的方法是不要w3c声明,直接写<html>,但是实际开发中肯定用w3c头部声明的,所以还是要寻求解决方法,或者说此题根本无解?

解决方案 »

  1.   

    可能还真无解~~我主要用来作为ie下编辑器上传时图片地址插入到光标位置的,我看csdn也不行,ie下也无法上传图片到光标位置
      

  2.   

    简单的方式判断textarea输入是否为空如果为空则不移光标。
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <body>
    <textarea rows="7" cols="49" id="box" onclick="tellPoint()"></textarea>
    <script>
    function tellPoint()
    {
    if(document.getElementById("box").value.length==0)
    {
    pnum.value = 0;
    return ;
    }
    var rng = event.srcElement.createTextRange();
    rng.moveToPoint(event.x,event.y);
    rng.moveStart("character",-event.srcElement.value.length);
    pnum.value = rng.text.length;
    }
    </script> <p></p> 
    光标位置:<input type="text" value="0" id="pnum" size="8"/>
    </body>
    </html>
      

  3.   

    就用<!DOCTYPE html >试试,html5已经简写为这样了
      

  4.   

    有点接近了,一开始是空的,点击没报错,然后输入了字符后,在字符外textarea的空白区单击,依旧报错,,楼下
    <!DOCTYPE html >也一样错
      

  5.   

    搞了个IE8下测了是有报错
    试了下加个兼容成IE7就行了
    加个
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 
    试试