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

发布于 2024-08-05 14:49:53 字数 81 浏览 9 评论 0原文

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

这可以用 JavaScript 完成吗?

I would like to select text on the page by simulating a left mouse button down and drag it to a specified x,y location (in pixels)

Can this be done with JavaScript?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

悲歌长辞 2024-08-12 14:49:53

我认为不可能使用 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);

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

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

I don't think its possible to control the mouse in this way using JavaScript.

However, you can select parts of a document directly using JavaScript. For example:

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

would select the first h3 element.

Also see: http://www.quirksmode.org/dom/range_intro.html for more info about building ranges.

To select the entire body of a document, you can use:

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

To select the 3rd character of, say, the 4th paragraph in a document, try:

var p4 = document.getElementsByTagName("p")[3].firstChild;
var range = document.createRange();
range.setStart(p4, 2);
range.setEnd(p4, 3);
window.getSelection().addRange(range);
-柠檬树下少年和吉他 2024-08-12 14:49:53
/**
 * 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();
        }
    }
}
/**
 * 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();
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文