javascript element.focus()IE

时间:2012-05-13 16:00:44

标签: javascript internet-explorer focus

因此,当用户双击div时,我想让它可编辑,并将光标设置为双击的位置。

html:

<div id="mydiv" class="cmydiv" ondblclick="fEdit(this, event)">haha brouhaha beeee lololol</div>

javascript:

function fEdit(elem, e) {
    elem.contentEditable = "true";
    var range;
    if (document.selection) {
        range = window.document.selection.createRange();
        range.expand("word");
        range.execCommand("unselect");
    } else {
        range = window.getSelection();
        if (range.rangeCount > 0) range.collapseToStart();
    }
    setTimeout(function() { elem.focus(); }, 10);
    //elem.focus();
}

你可以看到我用IE的setTimeout调用focus(),但它仍然没有用!在所有其他浏览器中,我可以在div中看到光标,现在可以编辑,但不是IE(版本8)。发生了什么事?

jsfiddle:http://jsfiddle.net/QcKpr/12/

1 个答案:

答案 0 :(得分:1)

这似乎可以做到这一点:

function fEdit(elem, e) {
    elem.contentEditable = "true";
    var range;
    if (document.selection) {
        range = window.document.selection.createRange();
        range.collapse();
        range.select();
    } else {
        range = window.getSelection();
        if (range.rangeCount > 0) range.collapseToStart();
    }
    setTimeout(function() { elem.focus(); }, 10);
    //elem.focus();
};

重要的是为IE调用range.select()。 range.collapse()与其他浏览器的range.collapseToStart()做同样的事情。 range.execCommand(“unselect”)不是你想要的。

更新了jsFiddle:http://jsfiddle.net/QcKpr/16/