我可以在JavaScript中用鼠标模拟文本选择吗?
我想通过模拟鼠标左键来选择页面上的文本,并将其拖动到指定的x,y位置(以像素为单位)我可以在JavaScript中用鼠标模拟文本选择吗?,javascript,mouse,simulate,Javascript,Mouse,Simulate,我想通过模拟鼠标左键来选择页面上的文本,并将其拖动到指定的x,y位置(以像素为单位) 这可以用JavaScript实现吗?据我所知,这是无法实现的。您可以选择的唯一文本是表单元素中的文本(textarea、input text等)我认为不可能使用JavaScript以这种方式控制鼠标 但是,您可以直接使用JavaScript选择文档的某些部分。例如: var h3s = document.getElementsByTagName("h3"); var range = document.creat
这可以用JavaScript实现吗?据我所知,这是无法实现的。您可以选择的唯一文本是表单元素中的文本(textarea、input text等)我认为不可能使用JavaScript以这种方式控制鼠标 但是,您可以直接使用JavaScript选择文档的某些部分。例如:
var h3s = document.getElementsByTagName("h3");
var range = document.createRange();
range.selectNode(h3s[0]);
window.getSelection().addRange(range);
将选择第一个h3元素
另请参见:有关建筑范围的详细信息
要选择文档的整个正文,可以使用:
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);
/**
*选择两个元素之间的文本。支持连续元素的选择。
*@param{Object}element 1 begin元素。
*@param{Object}element2结束元素。
*/
在元素(元素1、元素2)之间选择函数{
if(window.getSelection){
/*除IE 8和IE 7外的所有浏览器*/
var selection=window.getSelection();
selection.removeAllRanges();
var range=document.createRange();
范围设置开始(元素1,0);
范围设置结束(元素2,1);
选择。添加范围(范围);
}否则{
/*在IE 8/IE 7中工作良好*/
if(document.body.createControlRange){
var range1=document.body.createTextRange();
范围1.移动到元素文本(元素1);
var range2=document.body.createTextRange();
范围2.移动到元素文本(元素2);
var range=document.body.createTextRange();
range.setEndPoint(“StartToStart”,range1);
range.setEndPoint(“EndToEnd”,range2);
range.select();
}
}
}
我也可以选择直到元素的中间。。比如,字母3?另外,您的示例是否能够选择包含各种div、字体等的body元素? /** * 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(); } } }