在我的网络应用中,我正在尝试为文本元素的click和mouseup事件实现不同的行为。在mouseup事件中,我检查是否有选定的文本并对其执行某些操作。在点击事件中,我会做其他事情,例如在点击文本的某处导航。但是,如果有选定的文本,我将不会在click事件上执行代码,这是我遇到的部分。这是我现在正在做的模式:
//the function that returns selected text as string
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}
function onMouseUp(event) {
var selection = getSelectionText();
if (selection != "") {
alert("Selected text: " + selection);
}
}
function onClick(event) {
alert("You clicked the text.");
}
<body>
<h2 onclick="onClick(); return false;" onmouseup="onMouseUp(); return false;">
text to click or select
</h2>
</body>
我想在onClick处理程序中执行类似的操作
function onClick(event)
{
if ( !hasSelectedParts(this) ) // want to implement hasSelectedParts() function
{
alert("You clicked the text.");
}
}
如何实现hasSelectedParts(domElement)函数?那是, 有一种简单的方法可以检测dom元素中是否有一些选定的部分。
答案 0 :(得分:0)
感谢您在评论中提供任何帮助。以下是我提出的建议:
function hasSelectedContend(element)
{
var selection = window.getSelection();
return !selection.isCollapsed // selection data is about currently highlighted text
&& selection.anchorNode !== null // there is a selection
&& selection.anchorNode.parentNode === element; //selection is in the element
}