簡體   English   中英

我可以在JavaScript中使用鼠標模擬文本選擇嗎?

[英]Can I simulate text selection with the mouse in JavaScript?

我想通過模擬鼠標左鍵並將其拖動到指定的x,y位置(以像素為單位)來選擇頁面上的文本

可以用JavaScript完成嗎?

我不認為使用JavaScript以這種方式控制鼠標是可能的。

但是,您可以使用JavaScript直接選擇文檔的某些部分。 例如:

var h3s = document.getElementsByTagName("h3");
var range = document.createRange();
range.selectNode(h3s[0]);
window.getSelection().addRange(range);

會選擇第一個h3元素。

有關構建范圍的更多信息,請參閱: http ://www.quirksmode.org/dom/range_intro.html。

要選擇文檔的整個正文,您可以使用:

var body = document.getElementsByTagName("body")[0];
var range = document.createRange();
range.selectNode(body);
window.getSelection().addRange(range);

要選擇文檔中第4個字段的第3個字符,請嘗試:

var p4 = document.getElementsByTagName("p")[3].firstChild;
var range = document.createRange();
range.setStart(p4, 2);
range.setEnd(p4, 3);
window.getSelection().addRange(range);
/**
     * Select text between 2 elements. Support selection of continuous elements.
     * @param {Object} element1 begin element.
     * @param {Object} element2 end element.
     */
    function selectBetweenTwoElements(element1, element2) {
        if (window.getSelection) {
            /* all browsers, except IE 8 and IE 7 */
            var selection = window.getSelection();
            selection.removeAllRanges();
            var range = document.createRange();
            range.setStart(element1, 0);
            range.setEnd(element2, 1);
            selection.addRange(range);
        } else {
            /* works fine in IE 8 / IE 7 */
            if (document.body.createControlRange) {
                var range1 = document.body.createTextRange();
                range1.moveToElementText(element1);

                var range2 = document.body.createTextRange();
                range2.moveToElementText(element2);

                var range = document.body.createTextRange();
                range.setEndPoint("StartToStart", range1);
                range.setEndPoint("EndToEnd", range2);
                range.select();
            }
        }
    }

據我所知,無法做到。 您可以選擇的唯一文本是表單元素(textarea,輸入文本等)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM