我可以在JavaScript中模拟使用鼠标选择文本吗?

56lgkhnf  于 2022-11-20  发布在  Java
关注(0)|答案(3)|浏览(136)

我想通过模拟按下鼠标左键并将其拖动到指定的x,y位置(以像素为单位)来选择页面上的文本
这可以用JavaScript实现吗?

b4lqfgs4

b4lqfgs41#

我不认为它可能控制鼠标以这种方式使用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);

要选择文档中的第3个字符(例如第4段),请尝试:

var p4 = document.getElementsByTagName("p")[3].firstChild;
var range = document.createRange();
range.setStart(p4, 2);
range.setEnd(p4, 3);
window.getSelection().addRange(range);
ff29svar

ff29svar2#

/**
 * 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();
        }
    }
}
snz8szmq

snz8szmq3#

据我所知,这是不可能的。你唯一可以选择的文本是在一个表单元素(文本区域,输入文本等)。

相关问题