3

我正在尝试创建一个脚本来检测一个人何时完成突出显示文本。为此,我在包含 p 的 div 中有一个 onclick 事件,其中包含文本。如果您单击黄色空间中的任意位置,则单击事件上应该会出现警报框。如果您突出显示文本的一部分(但不是一直到文本末尾!)该事件将触发。

当您突出显示并包括最后一个单词“text”时,就会出现该错误。该事件不会触发。

我可以在 Chrome 和 Safari 中复制它,但在 Firefox 中似乎可以正常工作。没有测试过IE。

<html>
    <head>
        <style>
            div{background-color:#FFFF00}
        </style>
        <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
        <script>

            function mouseClicked()
            {
                alert("mouseClicked");
            }
        </script>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>



    </div>
        <div onClick='mouseClicked()'>
            <p>Try to highlight this text</p>
        </div>
    </body>


</html>

有任何想法吗?谢谢, Kshanti

编辑:刚刚发现它适用于这样使用的 onmouseup 事件:document.onmouseup=mouseClicked;

来自Javascript:如何检测一个单词是否突出显示

仍然很奇怪,它不适用于 onclick。

4

2 回答 2

2

我写了一些代码来说明这个问题。我发现在 FireFox 中问题已部分解决,但在 Chrome 中没有。代码位于:http: //jsfiddle.net/3NUfv/3/

<div id = "div1">
<p id = "text">
    Try to highlight this texT
</p>
<br>
</div>
<p id = "downForDiv"></p>
<p id = "downForP"></p>
<p id = "upForDiv"></p>
<p id = "upForP"></p>
<p id = "clickForDiv"></p>
<p id = "clickForP"></p> 
<button id = "clear">clear</button>

一旦您尝试突出显示某些文本,有关鼠标向下和向上位置的描述将显示在屏幕上。

我已经在 FireFox 和 Chrome 中打开了 jsfiddle 代码。FireFox 中的坏情况是,当您突出显示某些文本并将鼠标从黄色区域移动到绿色区域时,将检测到 mousedown 和 mouseup,但不会检测到单击。

如果您只是在 FireFox 中突出显示黄色区域中的某些文本,则可以检测到单击。

我认为这可能与浏览器的设计有关。

于 2013-06-21T21:46:55.590 回答
0

当浏览器检测到 mousedown 事件,然后在同一元素上触发 mouseup 事件时,会触发 click 事件。

奇怪的是,您将鼠标移到释放鼠标时触发 mousedown 的元素之外。由于您在同一元素上没有向下对,因此您不会获得点击。

于 2013-06-06T02:01:54.520 回答