如何在元素中选择文本?

  • 回答 (2)
  • 关注 (0)
  • 查看 (70)

我想让用户点击一个链接,然后在另一个元素(不是输入)中选择HTML文本。

通过“选择”我的意思是你将通过拖动鼠标选择文本相同的方式。这是一个研究的熊,因为每个人都在谈论“选择”或“突出”的其他条款。

这可能吗?我的代码到目前为止:

HTML:

<a href="javascript:" onclick="SelectText('xhtml-code')">Select Code</a>
<code id="xhtml-code">Some Code here </code>

JS:

function SelectText(element) {
    $("#" + element).select();
}

我错过了明显的东西吗?

真假二十一真假二十一提问于
最爱开车啦互联网的敏感者回答于

里有一个没有浏览器嗅探,不依赖于jQuery的版本:

function selectElementText(el, win) {
    win = win || window;
    var doc = win.document, sel, range;
    if (win.getSelection && doc.createRange) {
        sel = win.getSelection();
        range = doc.createRange();
        range.selectNodeContents(el);
        sel.removeAllRanges();
        sel.addRange(range);
    } else if (doc.body.createTextRange) {
        range = doc.body.createTextRange();
        range.moveToElementText(el);
        range.select();
    }
}
selectElementText(document.getElementById("someElement"));
selectElementText(elementInIframe, iframe.contentWindow);
秋之夕颜清念念不忘,必有回响回答于

我找到了一个解决方案,感谢TheVillageIdiot发现的这个线程。我可以修改给定的信息,并将其与一些jQuery混合,创建一个完全真棒函数来选择任何元素中的文本,而不管浏览器:

function SelectText(element) {
    var text = document.getElementById(element);
    if ($.browser.msie) {
        var range = document.body.createTextRange();
        range.moveToElementText(text);
        range.select();
    } else if ($.browser.mozilla || $.browser.opera) {
        var selection = window.getSelection();
        var range = document.createRange();
        range.selectNodeContents(text);
        selection.removeAllRanges();
        selection.addRange(range);
    } else if ($.browser.safari) {
        var selection = window.getSelection();
        selection.setBaseAndExtent(text, 0, text, 1);
    }
}

扫码关注云+社区

领取腾讯云代金券