我正在尝试将一个突出显示的菜单悬停在具有以下属性的选择上:
- 它应该在进行选择时出现。
- It should disappear when the selection is destroyed.
除了一件事之外,所有这些都很好地工作:如果单击现有选择,则选择消失,悬停菜单也应该消失。但无论出于何种原因,它都没有。
当您在现有选择之外单击时,如果您单击该选择,则选择类型将更改为“插入符号”或“无”。所以我尝试根据类型设置菜单的可见性。问题是,虽然选择的类型似乎在您通过window.getSelection()获得的对象中发生了变化,但如果您尝试从对象中获取类型,它不会发生变化。
我把这个jsfiddle放在一起来说明这个问题。https://jsfiddle.net/nxo2d7ew/1/
var el = document.getElementById("simple-text");
el.addEventListener("mouseup", placeDiv, false);
function placeDiv(x_pos, y_pos) {
var sel = window.getSelection();
var position = sel.getRangeAt(0).getBoundingClientRect();
// console.log(sel)
// console.log(position)
var highlighter = document.getElementById('highlighter').offsetWidth
var d = document.getElementById('highlighter');
d.style.left = position.left+position.width*0.5-highlighter*0.5 +'px';
d.style.top = position.top-50 +'px';
// console.log('sel.type: ' + sel.type)
var test = window.getSelection()
console.log(test) // returns an object with "type: None"
console.log(test.type) //returns "Range"
if (test.type !== 'Range') {
d.style.visibility = 'hidden';
}
else {
d.style.visibility = 'visible';
}
var sel = ''
}
谢谢 :-)