我正在尝试创建一个脚本,用于检测人员何时突出显示文本。为此,我在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上不起作用仍然很奇怪。
答案 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触发的元素之外。由于您在同一元素上没有向下对,因此您无法获得单击。