当突出显示p中的文本时,Javascript onclick不起作用

时间:2013-06-05 23:44:14

标签: javascript onclick

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

当您突出显示最后一个单词“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: How to detect if a word is highlighted

虽然它在onclick上不起作用仍然很奇怪。

2 个答案:

答案 0 :(得分: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中突出显示黄色区域中的某些文字,则可以检测到点击。

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

答案 1 :(得分:0)

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

可能的情况是,当您释放鼠标时,将鼠标移动到mousedown触发的元素之外。由于您在同一元素上没有向下对,因此您无法获得单击。