createRange()函数返回什么

时间:2014-01-15 05:20:54

标签: javascript jquery

我有这段代码,弹出页面中突出显示的文字。我遇到的问题是突出显示的文本总是弹出页面的末尾?

创建范围是否返回一个整数值,因为我可以在该行的中间弹出它?是否有任何方法可以弹出弹出窗口突出显示文本的行下方?

到目前为止的代码如下

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,它会在页面末尾弹出,但我希望它在选择文本的位置附近弹出。我怎么做 ?

2 个答案:

答案 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);
}

XMLHttpRequestwindow.ActiveXObject("msxml2.xmlhttp"); s ...