ı gibi işaretli bir metin var diyelim:Divanda bazı metinlerin seçilmesi nasıl devre dışı bırakılır?
Ve başlatmak veya seçimin bitiş işareti olmadığını böyle seçerek devre dışı bırakmak istiyoruz. Bu nedenle, bu seçimleri mümkün olmalıdır: Öte yandan
, bu seçimleri devre dışı bırakılmalıdır:
Şimdiye kadar, bazı basit css kullanan tek denedik
mark {
-khtml-user-select: all;
-webkit-user-select: all;
-o-user-select: all;
user-select: all;
}
This is <mark>marked text</mark>. I want to disable selecting only part of <mark>marked text</mark>.
Bunu yapmanın bir yolu var mı ? Herhangi bir cevap takdir edilecektir!
Yapmak istediklerimi elde ettim, bu yüzden burada paylaşıyorum.
function checkSelection() {
var sel = window.getSelection();
var marks = document.getElementsByTagName('mark');
for(var i = 1; i < sel.rangeCount; i++) {
sel.removeRange(sel.getRangeAt(i));
}
var range = sel.getRangeAt(0);
var startnode = range.startContainer;
var endnode = range.endContainer;
for (var i = 0; i < marks.length; i++) {
\t if (marks[i].contains(startnode)) {
range.setStartBefore(startnode);
}
\t if (marks[i].contains(endnode)) {
range.setEndAfter(endnode);
}
}
}
document.addEventListener('mouseup', checkSelection)
document.addEventListener('touchend', checkSelection)
This is <mark>marked text</mark>. I want to disable selecting only part of <mark>marked text</mark>.
Bunu yapmanın basit bir yolunu göremiyorum. Metni ayrıştırmanız, fare olaylarını kullanmanız, sınıflar eklemeniz gerekir. – kemotoe
Bazı hata raporlarını kaydedebilir ve tarayıcı satıcılarının bunu düzeltmesini isteyebilirsiniz. https://drafts.csswg.org/css-ui-4/#valdef-user-select-all "Eğer bir seçim öğenin bir parçasını içeriyorsa, seçim tüm unsurlarını içeren tüm öğeyi içermelidir" - bir tıklama ile başlamak zorunda seçimle ilgili hiçbir şey söylemiyor (hangi MDN bize söyler) –
"Bunu yapmanın bir yolu var" bölümüne gelince, bkz. https://stackoverflow.com/questions/985272/selecting- metin-in-bir-öğe-fare-ile-fare-vurgulamak-in-your-mouse (evet) –