我想通过模拟鼠标左键向下选择页面上的文本并将其拖动到指定的 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);
/**
* 选择 2 个元素之间的文本。支持选择连续元素。
* @param {Object} element1 开始元素。
* @param {Object} element2 结束元素。
*/
函数 selectBetweenTwoElements(element1, element2) {
如果(window.getSelection){
/* 所有浏览器,除了 IE 8 和 IE 7 */
var selection = window.getSelection();
selection.removeAllRanges();
var range = document.createRange();
range.setStart(element1, 0);
range.setEnd(element2, 1);
选择.addRange(范围);
} 别的 {
/* 在 IE 8 / IE 7 中运行良好 */
如果(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();
}
}
}
据我所知,这是不可能的。您可以选择的唯一文本是表单元素(文本区域、输入文本等)