我有这段代码,弹出页面中突出显示的文字。我遇到的问题是突出显示的文本总是弹出页面的末尾?
创建范围是否返回一个整数值,因为我可以在该行的中间弹出它?是否有任何方法可以弹出弹出窗口突出显示文本的行下方?
到目前为止的代码如下
var getSelected = function() {
var t = '';
if(window.getSelection) {
t = window.getSelection();
} else if(window.selection) {
t=window.selection.createRange();
}
return t;
}
$(document).ready(function(){
$(document).bind("mouseup",mouseup);
$(document).bind("mousedown",mousedown);
});
var mouseup=function(){
$('div#pop-up').show();
var st = getSelected();
document.getElementById("pop-up").innerHTML=st;
}
var mousedown = function(){
$('div#pop-up').hide();
}
以上是它的JS文件。虽然html只有一个带有弹出窗口ID的div
问题不在选择器内。但问题在于弹出窗口。由于innerHTML,它会在页面末尾弹出,但我希望它在选择文本的位置附近弹出。我怎么做 ?
答案 0 :(得分:0)
删除else if条件,它应该只是你的情况:
var getSelected = function() {
var t = '';
if(window.getSelection) {
t = window.getSelection();
} else {
t=window.selection.createRange();
}
return t;
}
答案 1 :(得分:0)
选择范围是一个对象,它描述了您突出显示的文本,在哪个元素及其一般状态。
之所以存在if
,是因为这是一个半近期(已经存在多年,只是不兼容,因此很少使用它)标准,并且不同的供应商使用了不同的实现。
如果您使用的是支持getSelection
的浏览器,请获取该函数返回的对象...
...否则,如果您的浏览器有一个window.selection对象,它包含读取实际选择的方法,那么就这样做。
这就像过去聆听事件的过去一样
现在,一切都是.addEventListener
。
曾几何时,它是:
if (document.addEventListener) { el.addEventListener(evt, func, false); }
else {
func = function () { func.call(el, window.event); };
el.attachEvent(evt, func);
}
或XMLHttpRequest
与window.ActiveXObject("msxml2.xmlhttp");
s ...