#javascript #html #textarea
#javascript #HTML #текстовая область
Вопрос:
У меня есть текстовая область, которую можно перемещать, в которой текст все равно можно выбирать, перетаскивая его. Для того, чтобы отличить «перетаскивание текста» от «перетаскивания перемещения», я должен знать, что точка, с которой пользователь начал перетаскивание (т. Е. Положение наведения курсора мыши), была пробелом или текстом.
Единственное, что я могу придумать, чтобы выяснить это, — это вычисление с использованием ширины символа и высоты строки, чего я хотел бы избежать.
Комментарии:
1. Возможно, вы можете воссоздать пробел, поместив div под текстовой областью и удалив пробел из текстовой области (пространство вокруг текста)
2. Просто добавьте дескриптор перетаскивания…. то, что вы хотите сделать, не удастся во многих крайних случаях.
3. @epascarello вы имеете в виду дескриптор изменения размера? Это было бы не то, что мне нужно
Ответ №1:
Не совсем уверен, о чем вы спрашиваете, но вот моя попытка перевести безумие в рабочий код:
let doc, htm, bod, I; // for use on other loads
addEventListener('load', ()=>{
doc = document; htm = doc.documentElement; bod = doc.body; I = id=>doc.getElementById(id);
// magic under here
const test = I('test');
function whiteStart(string){
if(string.match(/^s /)){
return true;
}
return false;
}
test.oncopy = test.ondragstart = function(){
let s = getSelection().toString();
if(whiteStart(s)){
console.log('"' s '" starts with one or more white spaces');
}
else{
console.log('"' s '" starts without a white space');
}
}
}); // end load
<div id='test'>Iamp;apos;m just going to put some text in here so we can run a very basic test. I hope this helps!</div>
Комментарии:
1. под «пробелом» (не «пробелом») я подразумевал пустое пространство, часть текста, в которой нет символов (например, справа от строки, которая не доходит до самого конца).
2.
/^s /
это регулярное выражение для начала с одного или нескольких пробелов. Чего вы на самом деле пытаетесь достичь?