Internet Explorer getClientRects绝对定位元素

时间:2014-11-25 17:09:32

标签: javascript internet-explorer highlight internet-explorer-11

我目前在IE 11中遇到了文本选择问题(尽管它也发生在以前的IE中)。我的目标是让文本选择工作在它返回给我的getClientRects。我所拥有的是一个简单的设置。我有一个容器div,在div中我放置了两个跨度:

<div onmouseup="mouseup()" id="container">
    <div class="span1">Span 1</div>
    <div class="span2">Span 2</div>
</div>

两个跨度绝对位于顶部/左侧和底部/右侧角落。容器的高度为100px;

在鼠标向上运行此功能:

function mouseup(){
    var selectObj = ((window.getSelection)?window.getSelection():document.getSelection());
    alert(selectObj.getRangeAt(0).getClientRects().length);
}

在Chrome上如果你试图从span 1到span 2中选择文本,它将提示3的长度,这就是我想要的,因为它让我知道文本选择的边界框的位置。在Internet Explorer上虽然它总是返回0.如果我只在一个范围内选择文本它将起作用,但是一旦你去多个它失败。

以下是所有设置的jsFiddle:http://jsfiddle.net/v6sa71hs/

1 个答案:

答案 0 :(得分:1)

看起来你不能这样做。如果你改为告诉所有东西浮动,然后用margin-top / left定位它就可以了。这是两个跨度的css

span{
    float: left;
    margin-bottom: -100%;
    margin-right: -100%;
}

更新了小提琴:http://jsfiddle.net/9gemwtc5/